如何使用python减少在selenium webdriver中找不到元素的等待时间

时间:2013-12-17 06:14:35

标签: python selenium selenium-webdriver

这个问题有些不同。
在我的程序中,我有超过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"

在上述程序中,由于无法找到元素断言,需要花费大量时间。
我怎样才能减少等待时间...

1 个答案:

答案 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)

doc:set_page_load_timeoutset_script_timeout