2013-12-12 126 views
0

casperjs有没有办法忽略特定事件的超时?我知道有一个onStepTimeout函数,但我相信它适用于所有步骤超时。我有一个循环进行刷新,并不在乎它是否超时与其他步骤。基于它正在执行的步骤来标记或忽略超时的任何方法?忽略CasperJS中的等待步超时

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

//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() { 
    //... 
}); 
+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() { 
    //... 
});