繁体   English   中英

如何使用phantomjs在JS事件后获取更新的页面内容?

[英]How to get updated page content after a JS event using phantomjs?

我有一个带有简单表格的页面。 该表格有一个输入文本。

我有以下代码:

page.open("http://www.example.com", function (status) {    
    page.includeJs("http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js", function() {
        page.evaluate(function() {
            $('input[name=myText]').val('my content');
        });     
    });     
});

(如您所见,我也加载了jQuery)

现在,当我设置此输入文​​本的内容时,页面会更改,页面的内容也会更改。

我的问题是:如何获得更新的内容? 问题是我需要提交表格,但是之后我不能这样做:

$('input[name=myText]').val('my content');

因为当我设置它时,页面上有一个JS事件会更改内容。

因此,我必须阅读新内容,使用JQuery查找表单,然后提交。

有人可以帮我吗?

谢谢!

因此,您的page.evaluate()调用具有副作用,并且会更改页面。 问题是这种变化是否瞬间发生。 但是您不能假设它确实如此-尤其是当它导致从远程Web服务器获取新内容时。

在这种情况下,您可以尝试的最好方法是休眠一段时间,然后假设您的页面包含新内容。 或者,当您感觉更高级时,请定期轮询您希望出现的DOM对象。 但是初学者应该尝试入睡:

....
page.evaluate( function() { ... } );
window.setTimeout(
    function() {
        /* press submit button */
    },
    5000 /* wait 5 seconds (5,000ms) */
);
....

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM