我有一个简单表单的页面。此表单有一个输入文本。
我有这段代码:
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查找表单然后提交。
有人可以帮助我吗?
谢谢!
答案 0 :(得分:2)
因此,您的page.evaluate()
来电会产生副作用并会更改页面。问题是这种变化是否会立即发生。但你不能认为它确实存在 - 特别是如果它导致从远程网络服务器获取新内容。
在这种情况下,您可以尝试的最好的事情是睡一会儿,然后假设您的页面有新内容。或者,当您感觉更高级时,定期轮询您期望出现的DOM对象。但是初学者应该试着睡觉:
....
page.evaluate( function() { ... } );
window.setTimeout(
function() {
/* press submit button */
},
5000 /* wait 5 seconds (5,000ms) */
);
....