【问题标题】:CasperJS: exit not workingCasperJS:退出不起作用
【发布时间】:2016-07-04 14:47:34
【问题描述】:

尝试通过 casperJS 的 start 方法打开随机页面,但有些页面加载正常,有些则没有,所以在这种情况下它没有从 casperjs 退出。 它卡在控制台中,然后需要使用 CTR+C 手动退出控制台。

casper.start("some url", function() {

    if(this.status().currentHTTPStatus == 200) {
        casper.echo("page is loading");
    } else {
        casper.echo("page is in error ");
        this.exit();
    }

});

【问题讨论】:

  • 你在代码中调用casper.run()吗?
  • 感谢您的回复,我正在使用this.exit,如下所示。 casper.run(function() { this.exit(); });如果某些页面没有响应或需要更长的时间来加载然后它被卡住了,我希望它被强制退出。
  • 如果页面没有在给定的时间范围内加载,有没有办法设置超时?

标签: phantomjs casperjs


【解决方案1】:

使用全局 stepTimeout 选项将其包装起来。

示例代码:

var casper = require('casper').create({
  stepTimeout: 10000 //10s 
})

casper.start()

casper.then(funtion(){
  casper.open(url)
})

casper.run()

【讨论】:

  • @DJJ 欢迎。如果没有其他问题,您可以将我的答案设置为已接受...
【解决方案2】:

尝试bypass() 忽略下一个然后

casper.start("some url", function() {
    if(this.status().currentHTTPStatus == 200) {
        casper.echo("page is loading");
    } else {
        casper.echo("page is in error ");
        this.bypass(2); // Will not execute the then functions.
    }
}).then(function() {
    // The 1st then function.
}).then(function() {
    // The 2nd then function.
})

casper.run(function() {
    this.echo('Something');
    this.exit(); // <--- Here.
});

【讨论】:

  • 感谢您的回复,但我正在使用 this.exit,如下所示。 casper.run(function() { this.exit(); });如果某些页面没有响应,则它不会强制退出。
  • 我已经编辑了答案,如果您还需要其他解决方案,请告诉我。
  • 如果页面没有在给定的时间范围内加载,有没有办法设置超时?
  • 在我的情况下,控制不会转移到 if else 部分
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-28
  • 1970-01-01
  • 2023-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多