我正在尝试抓一个网页。网站上有一个ajax按钮(一个div),点击它会在页面上附加更多结果的列表(比如显示20个结果)。我想点击它3次。
使用以下代码:
casper.then(function() {
for(var i=1; i<=3; i++){
casper.evaluate(function(){
$("div.showMore").click();
return true;
})
casper.wait(5000, function then(){
this.capture('image.png');
})
}
})
但它只是在没有点击的情况下捕获页面。我确信这段代码点击了..
$("div.showMore").click();
我通过Chrome控制台推送/尝试来检查它。
那我缺少什么?
答案 0 :(得分:0)
JavaScript因其异步特性而疯狂。我会特意说明你在一个函数中的点击次数。它不是最理想的解决方案,但很可能是您的代码工作方式是Casper在for循环之前或期间拍摄屏幕截图。所以你的更改没有注册。尝试将其拼写成四种不同的casper函数,看看结果如何。
casper.then(function() {
this.evaluate(function(){
$("div.showMore").click();
});
casper.wait(3000, function() {
this.evaluate(function(){
$("div.showMore").click();
});
casper.wait(3000, function() {
this.evaluate(function(){
$("div.showMore").click();
});
casper.wait(5000, function then(){
this.capture('image.png');
});