эквивалент selenium.wait_for_condition в привязках Python для WebDriver

Я переношу несколько тестов из Selenium в WebDriver. Моя проблема в том, что я не могу найти эквивалент для selenium.wait_for_condition. У привязки Python есть это на данный момент, или это все еще запланировано?

3 Solutions collect form web for “эквивалент selenium.wait_for_condition в привязках Python для WebDriver”

В настоящее время невозможно использовать wait_for_condition с помощью WebDriver. Код selenium python предоставляет класс DrivenSelenium для доступа к старым методам selenium, но он не может ждать 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 

Это решение отнюдь не идеально. Try / except необходимо для ситуаций, когда цикл запроса / ответа страницы задерживается, ожидая завершения какой-либо операции ajax. Если compare_source get вызывается в середине цикла запроса / ответа, он выкинет исключение WebDriverException.

Тестирование покрытия для WebDriverWait также полезно для просмотра.

Вот моя версия ответа Грега Садецкого, введенная в функцию:

 def click_n_wait(driver, button, timeout=5): source = driver.page_source button.click() def compare_source(driver): try: return source != driver.page_source except WebDriverException: pass WebDriverWait(driver, timeout).until(compare_source) 

Он нажимает кнопку, ждет, когда DOM изменится, а затем вернется.

Связывание Java включает класс Wait. Этот класс неоднократно проверяет состояние (с промежутками между ними) до достижения таймаута. Если вы можете обнаружить завершение своего Javascript с помощью обычного API, вы можете использовать тот же подход.

  • Как установить ChromeDriver в Windows 10 и запустить тесты Selenium с Chrome?
  • Именование файла при загрузке с помощью Selenium Webdriver
  • установить параметры хрома с помощью удаленного драйвера
  • Как отправить несколько ключей в WebDriver с помощью Python?
  • Откройте web в новой вкладке Selenium + Python
  • Загрузите файл по определенному пути, используя Selenium WebDriver
  • Selenium Webdriver с Java и Python
  • Как установить прокси-серверы вроде этого «user: pass@6.6.6.6: 8043» в FirefoxDriver of Selenium 2?
  •  
    Interesting Posts for Van-Lav
    Python - лучший язык программирования в мире.