【发布时间】:2012-06-01 04:36:59
【问题描述】:
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
browser = webdriver.Firefox()
browser.get("http://testsite.com")
element = WebDriverWait(browser, 10).until(lambda browser : browser.find_element_by_id("element"))
element.click() # it actually goes to page http://testsite.com/test-page.html
print "Just clicked! And I'm expecting timeout error!"
new_element = WebDriverWait(browser, 0.1).until(lambda browser : browser.find_element_by_id("element"))
print "Too bad there's no timeout error, why?!"
好的,正如您所看到的,即使我将等待时间设置为 0.1 秒,仍然没有抛出超时异常。当element.click() 执行时,它不会阻塞,直到整个页面加载完毕,这就是Just clicked! And I'm expecting timeout error! 出现的原因,令我惊讶的是new_element = WebDriverWait(browser, 0.1).until(lambda browser : browser.find_element_by_id("element")) 等到整个页面加载完毕。如果你使用implicit waits,你会得到同样的结果。
我的意思是,有时在您点击一个元素后,由于代理错误,页面加载可能需要几个小时,而您显然 不要 想等那么久,你想要的是一个超时异常。在这种情况下,您将如何使其工作?
【问题讨论】:
标签: python selenium webdriver selenium-webdriver