2010-08-11 55 views
0

當我使用SeleniumRC時,有時會遇到錯誤,但有時不會。我想這與wait_for_page_to_load()的時間有關,但我不知道需要多長時間?30000ms後超時

錯誤信息:

Exception: Timed out after 30000ms 
File "C:\Users\Herta\Desktop\test\newtest.py", line 9, in <module> 
    sel.open(url) 
File "C:\Users\Herta\Desktop\test\selenium.py", line 764, in open 
    self.do_command("open", [url,]) 
File "C:\Users\Herta\Desktop\test\selenium.py", line 215, in do_command 
    raise Exception, data 

這是我的計劃:

from selenium import selenium 

url = 'http://receptome.stanford.edu/hpmr/SearchDB/getGenePage.asp?Param=4502931&ProtId=1&ProtType=Receptor#' 

sel = selenium('localhost', 4444, '*firefox', url) 
sel.start() 
sel.open(url) 
sel.wait_for_page_to_load(1000) 
f = sel.get_html_source() 
sav = open('test.html','w') 
sav.write(f) 
sav.close() 
sel.stop() 
+0

您能正常訪問Firefox中的URL嗎? – katrielalex 2010-08-11 13:48:26

+0

是的,它的工作原理。 如果我逐個運行腳本,(這意味着sel.open(url)完成了。),它工作正常。但我不知道完成開放步驟需要多長時間。所以sel.wait_for_page_to_load(1000)有些問題。但我不知道如何弄清楚。 – Herta 2010-08-11 14:01:23

回答

0

的 「暫停30000ms後」 消息從sel.open(URL)來調用它使用硒默認超時。嘗試增加這個時間使用sel.set_timeout("timeout")。我建議60秒作爲一個很好的起點,如果60秒不起作用,請嘗試增加超時時間。另外請確保您可以正常進入頁面。

from selenium import selenium 

url = 'http://receptome.stanford.edu/hpmr/SearchDB/getGenePage.asp?Param=4502931&ProtId=1&ProtType=Receptor#' 

sel = selenium('localhost', 4444, '*firefox', url) 
sel.set_timeout('60000') 
sel.start() 
sel.open(url) 
sel.wait_for_page_to_load(1000) 
f = sel.get_html_source() 
sav = open('test.html','w') 
sav.write(f) 
sav.close() 
sel.stop() 
+0

謝謝您的回答:) sel.start() sel.set_timeout('60000') sel.open(url) – Herta 2010-08-11 14:44:17

0

我有這個問題,它是Windows防火牆阻止硒服務器。你有沒有試過向你的防火牆添加一個異常?

1

定時是自動化UI頁面時的一個大問題。您希望確保在需要時使用超時,併爲特定事件提供所需的時間。我看到你有

sel.open(url) 
sel.wait_for_page_to_load(1000) 

的sel.wait_for_page_to_load命令之後sel.open電話是多餘的。所有的sel.open命令都有內置的等待。這可能是你的問題的原因,因爲硒等待sel.open命令的內置過程的一部分。然後硒被告知再次等待頁面加載。由於沒有頁面被加載。它會引發錯誤。

但是,這是不太可能的,因爲它將trace放在sel.open命令上。 Wawa的迴應可能是你最好的選擇。