【发布时间】:2012-05-25 07:24:03
【问题描述】:
我正在测试一个有很多代理的网站,问题是其中一些代理非常慢。因此,我的代码时不时地卡在加载页面上。
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 你可以找到这个新功能的 python 补丁。
新问题:
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 会等待整个页面加载,然后才开始查找元素。在某些极端情况下,这甚至需要 HOURS。我该怎么办?
【问题讨论】:
标签: python selenium webdriver selenium-webdriver wait