使用phantomJS,等待按钮点击的效果完成后再继续

时间:2014-01-06 12:15:17

标签: javascript phantomjs

我正在使用PhantomJS 抓取一个网页,我按button显示一些信息,然后拍摄一个屏幕截图。

非常简单的代码如下:

var page = require('webpage').create();
page.settings.userAgent = 'useragent';
page.open('http://url', function() {
    page.includeJs("http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js",   function() {
        page.evaluate(function() {
           $("#button_id").click();    
        });     

        page.render('clicked.png');

        console.log('Done!');
        phantom.exit();    
    });
});

button点击有效,但渲染过快。我希望我的脚本在单击button后稍微等待,以便为信息提供足够的时间来显示。

我尝试将其更改为

window.setTimeout(function () {
    page.render('clicked.png');

    console.log('Done!');
    phantom.exit();
}, 3000);

但这没效果。

在继续之前,如何等待button点击必须生效的更改?

1 个答案:

答案 0 :(得分:0)

您可以使用setInterval定期检查是否存在您知道在预期更改发生后仅存在的元素。

window.setInterval(
  function () {
    if (<some element is present>) {
      // do rendering
      // exit or clear interval
      } },
  3000 );