当我使用SeleniumRC时,有时我会遇到错误,但有时候不会。我想这与wait_for_page_to_load()
的时间有关,但我不知道它需要多长时间?
错误信息:
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 :(得分:1)
自动化UI页面时,时间是一个大问题。您希望确保在需要时使用超时,并为某些事件提供所需的时间。我知道你有
sel.open(url)
sel.wait_for_page_to_load(1000)
sel.open调用后的sel.wait_for_page_to_load命令是多余的。所有sel.open命令都有内置等待。这可能是您的问题的原因,因为selenium等待sel.open命令的内置过程的一部分。然后告诉selenium再次等待页面加载。由于没有加载页面。它会引发错误。
但是,这不太可能,因为它会在sel.open命令上抛出跟踪。 Wawa上面的回答可能是你最好的选择。
答案 1 :(得分:0)
“30000ms后超时”消息来自使用selenium默认超时的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()
答案 2 :(得分:0)
我有这个问题,它是Windows防火墙阻止selenium服务器。您是否尝试过向防火墙添加例外?