如果我没记错的话,你有一个误用的wait(2000)
. 等待不会停止执行。下一行count++
,循环继续。
简而言之,等待是异步的,如果您确实需要等待一段时间然后执行一段代码,请使用文档中所示的等待回调函数:
casper.start('http://yoursite.tld/');
casper.wait(1000, function() {
this.echo("I've waited for a second.");
});
casper.run();
如果您已完成以下代码,您将不会得到想要的结果:
casper.start('http://yoursite.tld/');
casper.wait(1000);
this.echo("I've waited for a second.");
casper.run();
因此,您需要链接它:让我尝试修改您的代码:
var casper = require('casper').create();
var limit = 10, count = 0, waitms = 2000;
casper.start('http://example.com');
casper.then(function() {
// Raise a custom event (for the first load)
casper.emit("ajax.content.loaded");
// Event listener for a custom event
casper.on("ajax.content.loaded", function () {
// Increase counter
count++;
// Break loop when limit is reached
if(c > limit) {
casper.exit();
}
this.echo(this.getHTML());
this.echo('-------------------------');
this.click('.next-btn');
casper.wait(waitms, function () {
// Recursively raise the custom event after waiting a bit
casper.emit("ajax.content.loaded");
});
});
});
casper.run();
希望这可以帮助。