webdriver ждет запроса ajax в python

В настоящее время я пишу тест webdriver для поиска, который использует ajax для предложений. Тест работает хорошо, если я добавляю явное ожидание после ввода содержимого поиска и перед нажатием enter.

wd.find_element_by_xpath("//div[@class='searchbox']/input").send_keys("obama") time.sleep(2) wd.find_element_by_xpath("//div[@class='searchbox']/input").send_keys(Keys.RETURN) 

но

 wd.find_element_by_xpath("//div[@class='searchbox']/input").send_keys("obama") wd.find_element_by_xpath("//div[@class='searchbox']/input").send_keys(Keys.RETURN) 

выходит из строя. Я запускаю тесты на ec2 с 1 виртуальным процессором. Я подозреваю, что я нажал кнопку ввода даже до того, как отправляются запросы GET, связанные с поиском, и если я нажимаю клавишу ввода перед предложениями, это терпит неудачу.

Есть ли лучший способ добавления явного ожидания?

2 Solutions collect form web for “webdriver ждет запроса ajax в python”

Вы действительно можете добавить явное ожидание наличия такого элемента, как

 from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait # available since 2.4.0 from selenium.webdriver.support import expected_conditions as EC # available since 2.26.0 ff = webdriver.Firefox() ff.get("http://somedomain/url_that_delays_loading") ff.find_element_by_xpath("//div[@class='searchbox']/input").send_keys("obama") try: element = WebDriverWait(ff, 10).until(EC.presence_of_element_located((By.ID, "keywordSuggestion"))) finally: ff.find_element_by_xpath("//div[@class='searchbox']/input").send_keys(Keys.RETURN) ff.quit() 

См .: http://docs.seleniumhq.org/docs/04_webdriver_advanced.jsp#explicit-and-implicit-waits

И что насчет:

  driver.implicitly_wait(10) 

для вашего примера:

  wd.implicitly_wait(10) 

В этом случае каждый раз, когда вы собираетесь щелкнуть или найти драйвер элемента, он попытается выполнить это действие каждые 0,5 секунды в течение 10 секунд. В этом случае вам не нужно добавлять wait каждый раз. Примечание. Но это только элемент на экране. Он не будет ждать окончания каких-либо действий JS.

  • дождитесь обновления страницы
  • Максимизировать WebDriver (Selenium 2) в Python
  • Автоматические скриншоты при неудаче теста Selenium Webdriver в Python
  • Именование файла при загрузке с помощью Selenium Webdriver
  • Ошибка Webdriver: «Отсутствует предупреждение» после того, как UnexpectedAlertPresentException выбрано
  • сафари-драйвер selenium selenium
  • Как исправить Selenium WebDriverException: браузер, кажется, вышел, прежде чем мы могли подключиться?
  • принять ssl cert с марионеткой firefox webdrive python splinter
  • Смешение неявных и явных ожиданий
  • Как навести указатель мыши на python Webdriver
  • Как отправить несколько ключей в WebDriver с помощью Python?
  • Python - лучший язык программирования в мире.