我正在尝试从多个页面下载文件。我以为我会点击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 1
答案 0 :(得分:2)
你可能太早退出了。如果CasperJS用完了要执行的步骤,它将自动退出。只有then*
,wait*
和run
函数会向队列中添加一个步骤。
将casper.click(...)
更改为casper.thenClick(...)
。
将空函数传递给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();