Как нажать на автозаполнение после заполнения частичного текста? - PullRequest
1 голос
/ 05 февраля 2020

Я тестирую форму, в ней есть поле категорий, это раскрывающееся меню на основе ввода. После добавления некоторого текста с помощью .send_keys ('text') он показывает список категорий. Взгляните на его HTML:

<input type="text" aria-required="true" id="categories" maxlength="64" value="" autocomplete="off" class="input__69f5f__1POmY" placeholder="Pizza (Be specific)">

Я делаю это, чтобы найти и отправить входной текст:

categories = browser.find_element_by_id('categories').send_keys('Software Development')

, после этого он показывает список вроде:

click here to check image

Пожалуйста, кто-нибудь может мне помочь, как я могу выбрать опцию в раскрывающемся меню?

Я использую веб-драйвер Firefox.

Спасибо.

Ответы [ 2 ]

2 голосов
/ 05 февраля 2020

это не изящное решение, но я бы go подумал о кодировании, как показано ниже, чтобы выбрать элемент из выпадающего списка.

import time
from selenium.webdriver import Chrome

driver = Chrome()
driver.get('https://biz.yelp.com/signup_business/new')
categories_input = driver.find_element_by_id('categories')
categories_input.send_keys('Professional')

time.sleep(5) # replace with webdrive wait
categories_container = categories_input.find_element_by_xpath('..')
categories = categories_container.find_elements_by_css_selector('li[class*="suggestion-list-item"]')

for category in categories:
    if category.text == 'Professional Services':
        category.click()
        break
1 голос
/ 05 февраля 2020

Чтобы выбрать параметр с текстом Профессиональные услуги> Разработка программного обеспечения , вам нужно WebDriverWait для element_to_be_clickable(), и вы можете использовать любой из следующих Локаторов Стратегии :

  • Блок кода:

    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    
    driver.get("https://biz.yelp.com/signup_business/new")
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@id='categories']"))).send_keys("Software Development")
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@id='categories']//following::div[1]/ul/li"))).click()
    
  • Снимок браузера:

dropdown

...