30000ms后超时

时间:2010-08-11 13:35:09

标签: python selenium-rc

当我使用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()

3 个答案:

答案 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服务器。您是否尝试过向防火墙添加例外?