我想跳过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崩溃(带有分段错误)。
我无法找到任何其他解决方案来跳过当前步骤并继续下一步。还有其他办法吗?还有其他建议吗?!
答案 0 :(得分:0)
New in version 1.1
绕过给定数量的已定义导航步骤:
this.bypass();
onStepTimeout: function(){
this.bypass(1);
}