我正在测试一个有很多代理的网站,问题是其中一些代理非常慢。因此,我的代码时不时地卡在加载页面的工作中。
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
都会等待整个页面加载,然后才开始寻找那个元素。在一些极端的情况下,这甚至需要小时的。我能做些什么呢?
https://stackoverflow.com/questions/10750198
复制相似问题