触发点击事件PhantomJS

时间:2013-07-04 11:02:05

标签: javascript phantomjs

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

3 个答案:

答案 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来模拟鼠标点击,文档:

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