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();});
});
我认为它是同步的,这要感谢信息 – peixotorms 2014-12-19 15:46:26
所有'wait *'函数都是异步的。 JavaScript中没有'sleep'函数,所以当你想等待时,你必须在异步场景后面使用'setTimeout'。 – 2014-12-19 16:15:35