一尘不染

WebDriver的Python绑定中的selenium.wait_for_condition等效

selenium

我正在将一些测试从Selenium移到WebDriver。我的问题是我找不到selenium.wait_for_condition的等效项。Python绑定现在有此功能还是仍在计划中?


阅读 397

收藏
2020-06-26

共1个答案

一尘不染

当前,无法在WebDriver中使用wait_for_condition。python
selenium代码确实提供了DrivenSelenium类来访问旧的selenium方法,但是它不能执行wait_for_condition。
硒Wiki上有一些信息

最好的选择是使用WebDriverWait类。这是一个帮助程序类,该类定期执行一个函数,等待其返回True。我的一般用法是

driver = webdriver.Firefox()
driver.get('http://example.com')
add = driver.find_element_by_id("ajax_button")
add.click()
source = driver.page_source

def compare_source(driver):
    try:
        return source != driver.page_source
    except WebDriverException:
        pass

WebDriverWait(driver, 5).until(compare_source)
# and now do some assertions

此解决方案绝不是理想的选择。对于页面请求/响应周期被延迟以等待某些ajax活动完成的情况,try /
except是必需的。如果在请求/响应周期中调用compare_source get,则会抛出WebDriverException。

WebDriverWait测试范围也很有帮助。

2020-06-26