如何在 PHP Scriptable Web Browser 中调用 javascript 函数
Posted
技术标签:
【中文标题】如何在 PHP Scriptable Web Browser 中调用 javascript 函数【英文标题】:How to call javascript function in PHP Scriptable Web Browser 【发布时间】:2013-10-24 10:07:15 【问题描述】:我正在使用 php Scriptable Web Browser 从一个网站下载一些数据。
我们必须在表单中为字段设置值,然后单击 GO!按钮它将调用 java 脚本函数,所以我不知道如何在 PHP Scriptable Web 浏览器中调用 javascript 函数。
<input name="order_date_from" size="10" maxlength="10" value="10/24/2013">
To Date:
<input name="order_date_to" size="10" maxlength="10" value="10/24/2013">
Date Type:
<select name="date_type" id="date_type">
<option value="ORIG_ORD_DATE">Orig Ord Date</option>
<option value="MLM_ORD_DATE">Mlm Ord Date</option>
<option value="DATE_SHIP">Ship Date</option>
<option value="RMA_DATE">RMA Date</option>
<option value="RETURN_DATE">Return Date</option>
</select>
<input type="button" value="GO!" style="width:60px;" id="submit_form" onclick="doSubmit()">
然后使用 PHP Scriptable Web Browser 我使用
设置这些值$browser->setFieldByName('order_date_from', '10/21/2013');
$browser->setFieldByName('order_date_to', '10/21/2013');
$browser->setFieldById('date_type', 'RETURN_DATE');
之后
$log1=$browser->click('GO!');
$log1 应该包含生成的网页,但它没有显示任何内容可以告诉我如何调用 javascript 函数,在这种情况下是 dosumbit()。
参考链接http://www.simpletest.org/en/browser_documentation.html
谢谢 Gajanan Hiroji
【问题讨论】:
【参考方案1】:SimpleTest 提供的浏览器仿真模拟了用户可以在标准 HTML 页面上执行的操作。不支持 Javascript,而且不太可能很快添加支持。
——http://www.simpletest.org/en/form_testing_documentation.html
所以你不能。
要么自己对 JS 进行逆向工程,然后在代码中重复它所做的任何事情,要么使用支持 JS 的可编写脚本的浏览器(例如 Selenium 或 PhantomJS)。
【讨论】:
你能告诉我什么时候我 $log1=$browser->click('GO!');这样做会从 javascript 调用 dosumbit() 函数吗? 不,当然不会。重复我的部分答案:不支持 Javascript 好的,谢谢你的回答。我将尝试使用您在上一篇文章中发送的链接。 答案中引用了该链接的相关信息。你不能使用你用来运行 JS 的工具。您要么需要做一些除了运行 JS 之外的事情,要么需要更改工具。 好的,你能告诉我们从 Selenium 或 PhantomJ 网站中提取数据的最佳方法吗?【参考方案2】:我找到了从一个传递参数的 url 获取结果的另一种方法。dosubmit() 函数在内部调用此 url 并使用参数,因此使用 post() 方法来获取数据。
这里是代码
$parameters = array (
"group_code" => "xxxx",
"selClNo" => "xxxx",
"navigator" => "xxxxxx",
);
$data=$browser->post('https://www.xxxx.com/modules.php?m=charts&option=returns',$parameters);
echo $data
【讨论】:
以上是关于如何在 PHP Scriptable Web Browser 中调用 javascript 函数的主要内容,如果未能解决你的问题,请参考以下文章
如何使用Scriptable Objects创建动态变量系统
类转换:java.lang.String 不能转换为 org.mozilla.javascript.Scriptable