2014-09-01 100 views
1

我有一個CasperJS腳本,它執行各種功能並記錄每個步驟後發出信號所需的時間。這個過程起作用。我遇到了不經常調用我指定的自定義超時的情況。我知道這是因爲步長比超時大。我CasperJS設置是這樣的:CasperJS不超時

var session1 = require('casper').create({ 
    logLevel: 'debug', 
    waitTimeout: 60000, 
    userAgent: 'Mozilla/5.0' 
}); 

功能如下:

session1.waitForSelector('#Selector', function() { 
    this.emit('logged.in'); 
    this.clickLabel('Clients', 'a'); 
}, function timeout() { 
    this.emit('genericTimeout', 'Could not log in'); 
}); 

在某些情況下達到超時功能,有時,很少,事實並非如此。有什麼建議?

+0

爲session1的創建添加了「timeout:180000」。這總是被稱爲是最後的手段 – Ka0s 2014-11-10 11:39:47

回答

1

@ Ka0s,顯然你的代碼一切正常。只是一個事後的想法和你的代碼的建議......我注意到你正在使用waitForSelector,我更喜歡使用waitFor,因此他可以處理我職責中的任何其他變量。

另一點是,如果你注意的是你可以爲他們的超時設置一個默認時間,另外,在每次使用時,你可以強制一個不同的超時時間,我非常欣賞這樣的工作!

下面是一個例子:

// Default setting: 
casper.options.timeout = 30000; // 30s for loading a page 
casper.options.stepTimeout = 60000; // = 60s 1m to perform the processing ofeach step 

之後,在每個代碼塊,你可以強制不同的超時,如果你想...

casper.waitFor (check function() { 
    return this.evaluate (function() {return (__utils getElementByXPath __ ('XPATH') = null);.!}); 
} Then function() { 
    // Then 
}, Function timeout() { 
    // Timeout 
} 10000); // Forcing timeout 10 seconds waiting for the element on the page 

正如WAITFOR在waitForSelector作品以同樣的方式,看看這裏的文檔到waitFor()和這裏到waitForSelector()