首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Casperjs意外退出

Casperjs意外退出
EN

Stack Overflow用户
提问于 2015-08-10 16:07:11
回答 1查看 224关注 0票数 1

我正在尝试从多个页面下载文件。我想我会点击next按钮,直到它被禁用,但出于某种原因,casperjs在2页之后停止(直到最后有4页)。

我是刚接触过casperjs的人,所以我似乎不懂一些基本概念。

代码

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

发布于 2015-08-10 16:49:03

你可能走得太早了。如果CasperJS没有执行的步骤,它将自动退出。只有then*wait*run函数向队列中添加一个步骤。

简单修复#1:

casper.click(...)更改为casper.thenClick(...)

简单修复#2:

将空函数传递给run

代码语言:javascript
复制
casper.run(function(){});

然后退出,然后单击:

代码语言:javascript
复制
if(!this.exists("#MainContent_btnNext1")) {
    this.exit();
    return;
}

适当的解决办法:

您应该使用适当的递归迭代,因为其他方法是基于对CasperJS的未来版本可能不成立的假设。

代码语言:javascript
复制
function handlePage(status) {
    if (!this.exists(nextSelector)) {
        this.echo("finished");
    } else {
        // do something
        this.thenClick(nextSelector, handlePage);
    }
});
casper.start(url, handlePage).run();
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31924258

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档