2016-03-16 90 views
1

在我的線程中,我使用一個簡單的變量設置爲'1'或'0'來表示它是否準備好再次去。試圖調試一個問題,有時這不會被重置,我想我可能擁有它。Python硒超時異常捕獲

我不想連接超時到一些無限加載時間(我相信硒默認是不具有超時),所以我用:

Driver.set_page_load_timeout(30) 

,後來在該線程我會檢查

If condition: 
isrunning = 0 

我原本以爲的set_page_load_timeout只想停止30秒後加載,但如果我理解正確這它實際上拋出一個異常,所以我需要做的是這樣的:

try: 
    Driver.set_page_load_timeout(30) 
except: 
    isrunning = 0 
    Driver.Close() 

-Do whatever else in function - 
If condition: 
    isrunning = 0 
    Driver.Close() 

因此,如果它運行超過30秒,它將關閉並設置爲0,否則它將運行並在稍後檢查並設置爲0。

我很欣賞這是一小段代碼,但完整的東西很囉嗦,我認爲這是重要的一部分。

如果有人能證實我在這裏有正確的想法,我將不勝感激。我全力以赴進行測試,但這是一個每8小時發生一次的問題,難以分開,但我認爲這可能適合。

+0

很多文字,但什麼是問題?)如何攔截'TimeOutException'或什麼? – Andersson

回答

6

除了Driver.Close()之外,幾乎你的代碼工作正常。它應該是Driver.close()。當頁面未在特定時間內加載時,將拋出TimeoutException。看到我的代碼如下:

from selenium import webdriver 
from selenium.common.exceptions import TimeoutException 

Driver = webdriver.Firefox() 
try: 
    Driver.set_page_load_timeout(1) 
    Driver.get("http://www.engadget.com") 
except TimeoutException as ex: 
    isrunning = 0 
    print("Exception has been thrown. " + str(ex)) 
    Driver.close()