如何在PHP脚本化Web浏览器中调用javascript函数
How to call javascript function in PHP Scriptable Web Browser
我正在使用PHP脚本化Web浏览器从一个网站下载一些数据。
并且我们必须为字段设置值,然后单击GO!按钮,它将调用java脚本函数,所以我不明白如何在PHP可编程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 脚本化 Web 浏览器,我使用
$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!');
$log 1 应该包含生成的网页,但它没有显示任何内容,可以告诉我如何调用 javascript 函数,在这种情况下是 dosumbit()。
引用链接 http://www.simpletest.org/en/browser_documentation.html
谢谢加贾南博二
SimpleTest 提供的浏览器仿真模拟了用户可以在标准 HTML 页面上执行的操作。Javascript不受支持,并且不太可能很快添加支持。
— http://www.simpletest.org/en/form_testing_documentation.html
所以你不能。
要么自己对JS进行逆向工程,然后在代码中重复它所做的一切,要么使用支持JS的可脚本化浏览器(如Selenium或PhantomJS)。
我找到了从一个传递参数的 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
相关文章:
- 是什么让一个“;Uncaught RangeError:超过了最大调用堆栈大小“;错误(Chrome,在其他浏览器中显示
- 我们如何在互联网断开连接或用户关闭选项卡/浏览器时调用注销servlet
- 在新的浏览器选项卡上加载新的aspx页面后调用JavaScript函数
- 同步(阻塞)ajax调用是否可以阻塞浏览器'的UI
- 在某些浏览器上,Ajax 调用停止
- AJAX 调用在获得响应并成功执行时会冻结浏览器一段时间
- 在单击浏览器选项卡上调用 js 函数
- 如何在没有JQuery的情况下,通过对服务器的基本ajax调用,根据浏览器上的用户活动保持服务器会话活动
- 调用本机浏览器函数,即使它已被覆盖
- 从浏览器调用角度控制器函数
- 从web浏览器进行Win API调用
- Jquery没有在firefox浏览器中调用Webservice方法,它在Chrome和IE中运行良好
- 在Facebook图形中,使用Javascript的IE(所有版本)不支持API调用跨浏览器调用
- 无法从节点调用 REST.js如果我从浏览器调用,则可以正常工作
- 通过互联网从浏览器调用服务器端javascript
- 如何防止浏览器调用基本的验证弹出窗口并使用Jquery处理401错误
- 在不打开新页面的情况下从浏览器调用客户端URL
- 如何从android网络浏览器调用JavaScript接口方法
- 我们可以直接从浏览器调用twitter API吗?
- 欺骗浏览器调用javascript事件