这个问题有些不同。
在我的程序中,我有超过9个预期的断言。所以,如果找不到元素,我必须减少等待时间。
for i in range(len(10)):
try:
i.click()
driver.find_element_by_name("XXX").send_keys("XXXX")
except Exception,e:
print "this is an expected assertion so as to continue the program further iteration"
在上述程序中,由于无法找到元素断言,需要花费大量时间。
我怎样才能减少等待时间...
答案 0 :(得分:0)
将import selenium.webdriver.support.ui as ui
添加到标题中。
WebDriverWait
对象将一直等到找到你想要的东西:
try:
timeout = 10
wait = ui.WebDriverWait(driver, timeout)
wait.until(
lambda driver : driver.find_element_by_name("XXX").send_keys("XXXX")
)
except TimeoutException:
# timeout
编辑:
WebDriver
默认为60秒内部超时(这是ruby doc,但对于python应该是相同的):
在内部,WebDriver使用HTTP与很多人进行通信 驱动程序(JsonWireProtocol)。默认情况下,来自Ruby的Net :: HTTP 使用标准库,默认超时为60秒。 如果你在一个超过60秒的页面上调用Driver#get 加载,你会看到从Net :: HTTP引发的TimeoutError。
尝试重置超时:
driver.set_page_load_timeout(0)
driver.set_script_timeout(0)