【问题标题】:Jump to the next step on step timeout in CasperJS跳转到 CasperJS 中步骤超时的下一步
【发布时间】:2026-02-19 00:20:05
【问题描述】:

当运行该步骤所需的时间太长时,我想跳过我的 Casperjs 脚本中的一个步骤。我使用了(skip step) 中建议的解决方案,并添加了 stepTimeout 和 onStepTimeout 处理程序。这是执行此操作的代码:

var casper = require("casper").create({
  verbose: true,
  stepTimeout: 10000,
  pageSettings: {
    loadImages: false,
    loadPlugins: false,
    ignoreSslErrors: true,
    userAgent: 'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.2 Safari/537.36'
  },
  onStepTimeout: function() {
    this.echo("Step " + this.step + "timed out ");
    this.echo("Step .page" + this.step.page + "---- ");
    this.clear();
    this.page.stop();

  }

});

其余代码只是打开一个 URL 列表。问题是对于某些情况,例如打开此 URL Google Desktop,当打开它的时间超过指定的超时时间时,会触发 onStepTimeout 事件,但 this.page 的值未定义。所以它会导致 phantomjs 崩溃(有分段错误)。

我找不到任何其他解决方案来跳过当前步骤并继续下一步。还有其他方法吗?还有其他建议吗?!

【问题讨论】:

  • this.mainPage.stop() 适合你吗?
  • 我试过了。它也不起作用。无论如何感谢您的建议。
  • 如果你想重现它,here 是一段代码,与我朋友在 Casperjs 问题上发送的相同问题。

标签: javascript phantomjs casperjs headless-browser


【解决方案1】:

New in version 1.1 绕过给定数量的已定义导航步骤: this.bypass();

onStepTimeout: function(){
  this.bypass(1);
}

【讨论】: