4

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

我有这个代码:

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 找到表单然后提交。

有人可以帮助我吗?

谢谢!

4

1 回答 1

2

所以你的page.evaluate()电话有副作用,这会改变页面。问题是这种变化是否会立即发生。但是你不能假设它确实如此——尤其是当它导致从远程网络服务器获取新内容时。

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

....
page.evaluate( function() { ... } );
window.setTimeout(
    function() {
        /* press submit button */
    },
    5000 /* wait 5 seconds (5,000ms) */
);
....
于 2013-07-02T08:32:16.767 回答