单击casperjs上的下一页不起作用

时间:2014-12-19 02:45:18

标签: javascript casperjs

我正在尝试使用casperjs在使用ajax的网站上截取第二页的屏幕截图。 我使用Chrome和Ressurectio创建了一个测试脚本并稍微改了一下以满足我的需求。

但是,当我运行脚本时,第二个屏幕截图只显示“加载”页面,起初我认为这是由于ajax很慢......

问题是,即使超时为15秒,它仍然没有拍摄我想要的屏幕截图。

也许我忘了什么?

这是我的剧本:

var x = require('casper').selectXPath;
casper.options.viewportSize = {width: 1366, height: 667};
casper.on('page.error', function(msg, trace) {
   this.echo('Error: ' + msg, 'ERROR');
   for(var i=0; i<trace.length; i++) {
       var step = trace[i];
       this.echo('   ' + step.file + ' (line ' + step.line + ')', 'ERROR');
   }
});
casper.test.begin('Resurrectio test', function(test) {
   casper.start('http://recrutamento.auchan.pt/listaofertas.aspx');

   casper.waitForSelector(x("//a[normalize-space(text())='>>>']"),
       function success() {
            this.capture('click1.png')
            test.assertExists(x("//a[normalize-space(text())='>>>']"));
            this.click(x("//a[normalize-space(text())='>>>']"));
            this.wait(7000);
            this.capture('click2.png')
       },
       function fail() {
           test.assertExists(x("//a[normalize-space(text())='>>>']"));
   });

   casper.run(function() {test.done();});
});

1 个答案:

答案 0 :(得分:1)

wait是一个异步步骤函数,例如then,因此您必须将capture放入wait的回调中:

this.wait(7000, function(){
    this.capture('click2.png')
});

你早点截取屏幕截图。