Выбор селена из выпадающего списка Python - PullRequest
0 голосов
/ 30 марта 2020

Я использую селен в python, и я ищу, чтобы выбрать вариант Мужской из следующих:

<div class="formelementcontent">
          <select aria-disabled="false" class="Width150" id="ctl00_Gender" name="ctl00$Gender" onchange="javascript: return doSearch();" style="display: none;">
           <option selected="selected" title="" value="">
           </option>
           <option title="Male" value="MALE">
            Male
           </option>
           <option title="Female" value="FEM">
            Female
           </option>
          </select>

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

driver.switch_to.frame(iframe)

Я перепробовал много вариантов и много искал. Это дает мне большую часть пути.

driver.find_element_by_id("ctl00_Gender-button").click()
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.ID, "ctl00_Gender")))
select=Select(driver.find_element_by_id("ctl00_Gender"))
check=select.select_by_visible_text('Male')

Если я использую WebDriverWait, он истекает.

Я попытался выбрать по видимому тексту и индексу, оба дают:

ElementNotInteractableException: Элемент мог не прокручиваться в поле зрения

Ответы [ 2 ]

1 голос
/ 30 марта 2020

Согласно тегу HTML, который вы указали, атрибут <select> имеет значение атрибута style , установленное как display: none;. Поэтому, используя Selenium , было бы сложно взаимодействовать с этим WebElement .

Если вы обращаетесь к DOM Tree веб-страницы через , возможно, вы найдете пару <li> узлов, эквивалентных <option> узлам в узле <ul>. От вас может потребоваться взаимодействие с ними.

Вы можете найти пару соответствующих подробных обсуждений в:

0 голосов
/ 30 марта 2020

Попробуйте следующие решения:

Решение 1:

select = Select(driver.find_element_by_id('ctl00_Gender'))
select.select_by_value('MALE')

Примечание добавьте следующие импорта в ваше решение:

from selenium.webdriver.support.ui import Select

Решение 2:

driver.find_element_by_xpath("//select[@id='ctl00_Gender']/option[text()='Male']").click()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...