Как выбрать раскрывающийся список на Selenium, используя Python - PullRequest
1 голос
/ 02 августа 2020

Я пытаюсь выбрать страну, но почему-то не получается. Код ниже - это то, что я сделал. Он не работает должным образом.

<select name="state" class="form-control selectpicker">
                                        <option value=" ">Please select your state</option>
                                        <option>Alabama</option>
                                        <option>Alaska</option>
                                        <option>Arizona</option>
                                        <option>Arkansas</option>
                                        <option>California</option>
                                        <option>Colorado</option>
                                     </select>

Вот что я сделал: browser.find_element_by_css_selector(".form-control.selectpicker [option='Alaska']").click()

1 Ответ

1 голос
/ 03 августа 2020

Чтобы выбрать <option> с текстом Alaska , вы можете использовать следующую Стратегию локатора :

  • Используя xpath:

    dropdown_menu = Select(browser.find_element_by_xpath("//select[@class='form-control selectpicker' and @name='state']"))
    dropdown_menu.select_by_visible_text('Alaska')
    

В идеале вам необходимо вызвать WebDriverWait для element_to_be_clickable(), и вы можете использовать следующую Стратегию локатора :

  • Использование CSS_SELECTOR и в одной строке:

    Select(WebDriverWait(browser, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "select.form-control.selectpicker[name='state']")))).select_by_visible_text('Alaska')
    
  • Примечание : вам необходимо добавить следующие импорты :

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    

Ссылка

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...