如何使用PhantomJS在单个网页中发送多次点击?

时间:2017-03-21 11:04:44

标签: javascript phantomjs

我使用PhantomJS 2.1.1截取网页截图。

我在this particular page上需要的是在div元素上多次单击以便在diaporama中滑动图片,方法是使用page.evaluate块中的以下代码:

page.open(url, function () {
    page.evaluate(function() { 
        for (i = 0; i < 10; i++) {
            setTimeout(function(){
                document.querySelector("div.linksNavNext.linksNav.icon-fleche-suiv").click();
            }, 500);
        }
    });       

    setTimeout(function(){
        page.render('url.png');
        phantom.exit();
    }, 2000);
});

如你所见,我试图通过发送10次点击事件来获得diaporama中的第10张照片。但我得到的只是第二张照片。看起来click事件只发送一次,尽管有for循环。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

似乎所有10次点击都在500毫秒内完成。你需要推迟超时:

for (i = 0; i < 10; i++) {
  setTimeout(function(){
    document.querySelector("div.linksNavNext").click();
  }, 500 * i);
}