我正在尝试从多个页面下载文件。我想我会点击next按钮,直到它被禁用,但出于某种原因,casperjs在2页之后停止(直到最后有4页)。
我是刚接触过casperjs的人,所以我似乎不懂一些基本概念。
代码
var casper = require('casper').create();
casper.on('load.finished', function (status) {
if (status !== 'success') {
this.echo ("Failed to load page.");
}
else {
//download_files_from_page();
this.echo ("1");
casper.click("#MainContent_btnNext1");
}
});
casper.start('http://matrixcatalog.co.il/NBCompetitionRegulations.aspx');
casper.run();预期产出
1 1 1
实际输出
1 1
发布于 2015-08-10 16:49:03
你可能走得太早了。如果CasperJS没有执行的步骤,它将自动退出。只有then*、wait*和run函数向队列中添加一个步骤。
简单修复#1:
将casper.click(...)更改为casper.thenClick(...)。
简单修复#2:
将空函数传递给run
casper.run(function(){});然后退出,然后单击:
if(!this.exists("#MainContent_btnNext1")) {
this.exit();
return;
}适当的解决办法:
您应该使用适当的递归迭代,因为其他方法是基于对CasperJS的未来版本可能不成立的假设。
function handlePage(status) {
if (!this.exists(nextSelector)) {
this.echo("finished");
} else {
// do something
this.thenClick(nextSelector, handlePage);
}
});
casper.start(url, handlePage).run();https://stackoverflow.com/questions/31924258
复制相似问题