В настоящее время невозможно использовать wait_for_condition с WebDriver. Код селена python предоставляет класс DrivenSelenium для доступа к старым методам селена, но он не может делать wait_for_condition. В вине селена есть информация об этом .
Лучше всего использовать класс 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. Если метод get_source get вызывается в середине цикла запрос / ответ, он вызывает исключение WebDriverException.
Также полезно посмотреть на тестовое покрытие для WebDriverWait .