Casperjs意外退出



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

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

相关内容

  • 没有找到相关文章

最新更新