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

Javascript 如何使用phantomjs在JS事件后获得更新的页面内容?,javascript,phantomjs,Javascript,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[n

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

我有以下代码:

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) */
);
....