Casperjs意外退出

时间:2015-08-10 16:07:11

标签: javascript casperjs exit

我正在尝试从多个页面下载文件。我以为我会点击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

1 个答案:

答案 0 :(得分:2)

你可能太早退出了。如果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();