2013-12-12 76 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() { 
    //... 
});