2014-12-19 81 views
0

我想在使用ajax的网站上使用casperjs截取第二页。 我使用Chrome和Ressurectio创建测试脚本,并稍微改变它以适应我的需求。点击下一页casperjs不工作

然而,当我运行该脚本,第二个屏幕只显示“加载”页面,起初我还以为这是由于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

wait是一个异步阶跃函数如then,所以你必须把capturewait回调:

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

你把截图提前。

+0

我认为它是同步的,这要感谢信息 – peixotorms 2014-12-19 15:46:26

+0

所有'wait *'函数都是异步的。 JavaScript中没有'sleep'函数,所以当你想等待时,你必须在异步场景后面使用'setTimeout'。 – 2014-12-19 16:15:35