如何在PHP脚本化Web浏览器中调用javascript函数

How to call javascript function in PHP Scriptable Web Browser

本文关键字:浏览器 调用 javascript 函数 Web PHP 脚本      更新时间:2023-09-26

我正在使用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