#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. Я прошу свою часть за поздний ответ, я пробовал это, но не сработало., спасибо, теперь эта проблема решена