使用Python在Selenium Webdriver(Selenium 2)中显式等待和隐式等待的问题

Sha*_*ane 5 python selenium-webdriver

我必须与一些非常慢的代理一起工作并且时不时地陷入困境.因此,我正在尝试为此找到解决方案/解决方法,这是我的问题:

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait

browser = webdriver.Firefox()
browser.get("http://whateversite.com")

element = browser.find_element_by_id("element")
element.click() # go to page http://whateversite.com/page.html

new_element = browser.find_element_by_id("newElement")
Run Code Online (Sandbox Code Playgroud)

无论你是browser.implicitly_wait(30)事先设置还是使用new_element = WebDriverWait(browser, 30).until?lambda browser : browser.find_element_by_id("newElement"))它只是卡住,有时候是为了HOURS.似乎等待该页面http://whateversite.com/page.html完全加载,在某些极端情况下可能需要数小时.

我该怎么做才能避免这种情况?

use*_*444 0

尝试使用不稳定负载策略。例如`您可以在http://www.whatwg.org/specs/web-apps/current-work/multipage/dom.html#current-document-readinessFirefoxProfile profile = new FirefoxProfile(); profile.setPreference("webdriver.load.strategy", "unstable"); WebDriver driver = new FirefoxDriver(profile);找到更多信息

也试试这个。driver.manage().timeouts().pageLoadTimeout(30, TimeUnit.SECONDS); http://selenium.googlecode.com/svn/trunk/docs/api/java/org/openqa/selenium/WebDriver.Timeouts.html#pageLoadTimeout%28long,%20java.util.concurrent.TimeUnit%29