在CasperJS中忽略等待步骤超时

时间:2013-12-12 22:32:28

标签: casperjs

casperjs中有没有办法忽略特定事件的超时?我知道有一个onStepTimeout函数,但我相信它适用于所有步骤超时。我有一个循环进行刷新,并不关心它是否超时与其他步骤。有没有根据它执行的步骤标记或忽略超时的方法?

编辑:这是我的代码段。我使用全局变量标志工作,但不知道这是否正确:

//flag
var tout="yes";

//onStepTimeout function
  onStepTimeout: function(self,m) {
    console.log('List Detection: Process step timed out.');
    if ( tout == "yes" ) {
      this.exit();
    }
  },


//Event I dont want to skip if timeout
tout="no";
casper.thenOpen('https://url/account/gotoLogin.action', function() {
  //...
});


//Event I do want to skip if timeout
tout="yes";
casper.thenOpen('https://url/browse/browse.action', function() {
  //...
});

1 个答案:

答案 0 :(得分:0)

您当然可以使用全局变量执行此操作,但是您错过了casper.then*仅调度步骤而不执行它们。您需要在步骤内移动全局变量,以确保它在正确的时间翻转。

//flag
var mayExit = true;

function addMayExitStep(newMayExit){
    casper.then(function(){
        mayExit = newMayExit;
    });
}

//onStepTimeout function
  onStepTimeout: function(self,m) {
    console.log('List Detection: Process step timed out.');
    if ( mayExit ) {
      this.exit();
    }
  },

//Event I dont want to skip if timeout
addMayExitStep(false);
casper.thenOpen('https://url/account/gotoLogin.action', function() {
  //...
});


//Event I do want to skip if timeout
addMayExitStep(true);
casper.thenOpen('https://url/browse/browse.action', function() {
  //...
});