Выберите элемент в раскрывающемся меню с помощью библиотеки selenium Python - PullRequest
0 голосов
/ 11 февраля 2020

Я пытаюсь выбрать элемент в раскрывающемся меню. Я попытался использовать вызов «driver.find_element_by_xpath», чтобы найти элемент в списке. Проблема в том, что я не могу выбрать это. Я попытался вызвать ".click ()", но ошибка говорит о том, что элемент не взаимодействует. Как я могу выбрать элемент с кодом HTML на изображении ниже?

enter image description here

Ответы [ 3 ]

0 голосов
/ 11 февраля 2020

Вы должны вставить код, который вы используете, чтобы помочь понять, что вы делаете.

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

И затем щелкните нужный элемент.

Python

driver.find_element_by_name('rcbScroll rcbWidth').click()
driver.find_element_by_name('rcbHovered').click()

Java

driver.findElement(By.className("rcbScroll rcbWidth")).click();
driver.findElement(By.className("rcbHovered")).click();
0 голосов
/ 13 февраля 2020

Я нашел решение. Так как раскрывающееся меню закодировано как «входной» HTML тэг, традиционный метод select Python не работает, так как он работает только с «select» HTML тэгом. Но метод .send_keys работает просто отлично. Итак, простой код ниже делает свое дело:

variable_name = driver.find_element_by_xpath('xpath of an <input> element in HTML code')
variable_name.click() #Clicks on the drop down button
variable_name.send_keys("text of an option in the drop down list") #sends text of an option in the drop down
0 голосов
/ 11 февраля 2020

попробуйте щелкнуть по тегу ul, а затем щелкните по раскрывающемуся списку li, который хотите выбрать.

Щелкните по раскрывающемуся списку и получите значения li, если он использует JS, в противном случае вы можете напрямую нажать на значения li, соответствующие вашему значению

    element_dropdown = WebDriverWait(driver, 10).until(
        EC.element_to_be_clickable((By.CLASS_NAME, 'rcbList')))
   current_user_driver.execute_script("arguments[0].click();",element_dropdown)

    all_li_dropdown = WebDriverWait(driver, 10).until(
        EC.presence_of_all_elements_located((By.CLASS_NAME, 'rcbItem')))

    for single_li in all_li_dropdown:
        li_value = single_m_li.get_attribute("innerHTML")
        if li_value == "your_value":
            driver.execute_script("arguments[0].click();", single_li)
            break
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...