我正在将一些测试从Selenium移到WebDriver。我的问题是我找不到selenium.wait_for_condition的等效项。Python绑定现在有此功能还是仍在计划中?
当前,无法在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的测试范围也很有帮助。