我正在使用PhantomJS来试图解决一个琐事问题及其答案。在Stackoverflow的帮助下。我对Javascript了解不多,所以请详细说明我做错了什么 页面在那里:
http://www.buddytv.com/trivia/game-of-thrones-trivia.aspx
以下是代码:
function click(el) {
var ev = document.createEvent("MouseEvent");
ev.initMouseEvent(
"click",
true /* bubble */, true /* cancelable */,
window, null,
0, 0, 0, 0, /* coordinates */
false, false, false, false, /* modifier keys */
0 /*left*/, null
);
el.dispatchEvent(ev);
}
click('a[href="javascript:___gid_10(0)"]');
answer = page.evaluate(function() {
return $('body').html();
});
我正在尝试点击第一个答案并返回页面后返回的内容(除了它返回NULL)。任何帮助赞赏!感谢。
答案 0 :(得分:3)
常见问题解答:为什么在我发送活动后页面不会立即更改
点击后,您需要使用window.setTimeout
检查之后的某些时间对网页所做的更改。说一下。或5.因为页面不会立即更改。它们需要时间来加载和渲染。
我希望在PhantomJS网站的首页上 mg 这个答案。
常见问题解答:我想在我的网页上发送一个活动。怎么样?
嗯 - 你必须在page.evaluate()
电话中进行调度。否则你只是在PhantomJS上发送一个事件。这是没有意义的。
答案 1 :(得分:0)
试试这个
function click(el){
var ev = document.createEvent("MouseEvent");
ev.initMouseEvent(
"click",
true /* bubble */, true /* cancelable */,
window, null,
0, 0, 0, 0, /* coordinates */
false, false, false, false, /* modifier keys */
0 /*left*/, null
);
el.dispatchEvent(ev);
}
答案 2 :(得分:0)
你也可以使用PhantomJS的sendEvent
来模拟鼠标点击,文档: