Не удается выбрать и щелкнуть раскрывающийся результат поискового запроса с помощью Selenium webdriver

#python #selenium-webdriver

Вопрос:

Я пытаюсь выполнить действие «Выбрать и щелкнуть» в раскрывающемся списке результатов поиска для целей тестирования. Хотя я не получаю ошибку ant, но я застрял и не могу этого сделать, результаты поиска появились, а затем сразу исчезли. Пожалуйста, кто-нибудь, помогите мне. Я использую скрипт Python для автоматизации webdriver. Вот скриншот ниже для справки. введите описание изображения здесь. Я пробовал webdriverwait для того же действия, но он выдает ошибку исключения тайм-аута. Если есть какие-либо дочерние действия из CSS для выполнения, дайте мне знать. Вот что я попробовал

 search = driver.find_element_by_id('searchInput')
search.send_keys("flowers")

dropdown = WebDriverWait(driver, 4).until(
        EC.presence_of_element_located((By.XPATH, "//li[text()='flowers']")))
 

Помимо этого фрагмента, я хочу просто выполнить операцию ввода ключа, где я получу результат запроса для «цветка» в этой электронной почте. Веб-сайт.

Вот URL — адрес веб-сайта- https://paytmmall.com

Ответ №1:

Как только вы введете flower input field , появится несколько вариантов, основанных на предоставленных входных данных. Они находятся внутри li tags и под b tag .

Код :

 driver = webdriver.Chrome(driver_path)
driver.maximize_window()
#driver.implicitly_wait(30)
wait = WebDriverWait(driver, 30)
driver.get("https://paytmmall.com/")
search = wait.until(EC.visibility_of_element_located((By.ID, "searchInput")))
search.send_keys("flowers")
time.sleep(3)
wait.until(EC.visibility_of_element_located((By.XPATH, "(//li)[4]/descendant::b[contains(text(),'flowers')]"))).click()
 

time.sleep это просто для наглядности. вы также можете удалить это.

Кроме того , этот xpath (//li)[4]/descendant::b[contains(text(),'flowers')] основан на индексации xpath, так как я думаю, что вы хотите выбрать 4-й вариант, который является самим цветком. В случае, если вы хотите select другой вариант, вам придется написать другой xpath .

В случае, если вы хотите просто выбрать искомый элемент, лучше передать клавишу ввода, как только вы введете цветок в поле ввода.

Для этого вы можете использовать приведенный ниже код :

 search = wait.until(EC.visibility_of_element_located((By.ID, "searchInput")))
search.send_keys("flowers")
time.sleep(3)
search.send_keys(Keys.RETURN)
 

Комментарии:

1. ожидание = WebDriverWait(драйвер, 5) поиск = драйвер.find_element_by_id(‘searchInput’) поиск.send_keys(«цветы») время.сон(3) поиск = ждать.пока(EC.visibility_of_element_located((By.ID, «searchInput»))) сначала это не работает, но как только я помещаю ожидание в первую строку кода, это работает хорошо, извините за опоздание, так что извините, теперь вы можете закрыть этот билет прямо сейчас

Ответ №2:

Предлагаемые параметры не содержат текст непосредственно в li элементах, они находятся внутри дочерних элементов внутри li элементов.
Попробуйте это вместо этого:

 search = driver.find_element_by_id('searchInput')
search.send_keys("flowers")

dropdown = WebDriverWait(driver, 4).until(
EC.visibility_of_element_located((By.XPATH, "//li//*[text()='flowers']")))
 

Комментарии:

1. Я прошу свою часть за поздний ответ, я пробовал это, но не сработало., спасибо, теперь эта проблема решена