2

我正在使用 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)。任何帮助表示赞赏!谢谢。

4

3 回答 3

3

常见问题解答:为什么我发送事件后页面没有立即更改?

单击后,您需要使用window.setTimeout一段时间检查对页面所做的更改。说一下。或者 5. 因为页面不会立即改变。它们需要时间来加载和渲染。

我想把这个答案在 PhantomJS 网站的首页。

常见问题解答:我想在我的页面上调度一个事件。如何?

好吧 - 你必须在page.evaluate()通话中进行调度。否则,您只是在 PhantomJS 本身上调度一个事件。这是没有意义的。

于 2013-07-04T14:41:45.347 回答
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);
    }
于 2013-07-04T11:32:21.137 回答
0

你也可以使用 PhantomJSsendEvent来模拟鼠标点击,这里的文档:

http://phantomjs.org/api/webpage/method/send-event.html

于 2016-04-18T10:45:04.373 回答