我测试一个网站,有很多代理的,问题是一些人代理的都是非常缓慢。因此,我的代码被困在加载页面时不时。在Selenium WebDriver中设置一个真正的超时加载页面?
from selenium import webdriver
browser = webdriver.Firefox()
browser.get("http://example.com/example-page.php")
element = browser.find_element_by_id("someElement")
我试过很多东西一样explicit waits
或implicit waits
和已经有一段时间摸索,但仍然没有找到一个解决方案或替代方法。似乎没有什么影响页面加载行browser.get("http://example.com/example-page.php")
,这就是为什么它总是卡在那里。
任何人有一个解决方案?
更新1:
JimEvans的回答解决了我以前的问题,here你可以找到关于此新功能蟒蛇补丁。
新的问题:
browser = webdriver.Firefox()
browser.set_page_load_timeout(30)
browser.get("http://example.com/example-page.php")
element = browser.find_element_by_id("elementA")
element.click() ## assume it's a link to a new page http://example.com/another-example.php
another_element = browser.find_element_by_id("another_element")
正如你可以看到browser.set_page_load_timeout(30)
只影响browser.get("http://example.com/example-page.php")
这意味着,如果该页面加载在30秒内将抛出超时异常,但问题是,它没有权力页面加载,如element.click()
,虽然它不会阻止,直到新的页面完全加载了,another_element = browser.find_element_by_id("another_element")
是在屁股的新的痛苦,因为无论explicit waits
或implicit waits
将等待整个页面加载它开始寻找之前那个元素。在某些极端情况下,这甚至需要小时。我能做些什么呢?
酷!当然是一个很好的功能。 –
@JimEvans:感谢队友,我刚刚为此http://code.google.com/p/selenium/issues/detail?can=2&start=0&num=100&q=&colspec=ID%20Stars%20Type%找到了python补丁程序20Status%20Priority%20Milestone%20Owner%20Summary&groupby =&sort =&id = 687,而且效果很好。 – Shane
@JimEvans:嘿伙计,请检查我的更新。有一个新问题困扰着我。 – Shane