Selenium – Python – выпадающее меню

Мне нужно выбрать элемент из выпадающего меню.

Например, откройте это:

<select id="fruits01" class="select" name="fruits"> <option value="0">Choose your fruits:</option> <option value="1">Banana</option> <option value="2">Mango</option> </select> 
  1. Поэтому сначала я должен щелкнуть по нему. Я делаю это:

     inputElementFruits = driver.find_element_by_xpath("//select["id='fruits']).click() 

(нормально, он открывает меню)

  1. И после того, как я должен выбрать хороший элемент, скажем, Манго. Я пробую другую вещь с inputElementFruits.send_keys(...) но это не сработало.

5 Solutions collect form web for “Selenium – Python – выпадающее меню”

Если ваш клик не запускает какой-либо вызов ajax для заполнения вашего списка, вам фактически не нужно выполнять клик.

Просто найдите элемент, а затем перечислите параметры, выбрав нужные вам параметры.

Вот пример:

 from selenium import webdriver b = webdriver.Firefox() b.find_element_by_xpath("//select[@name='element_name']/option[text()='option_text']").click() 

Вы можете узнать больше:
https://sqa.stackexchange.com/questions/1355/unable-to-select-an-option-using-seleniums-python-webdriver

Selenium предоставляет удобный класс Select для работы с конструкциями select -> option :

 from selenium import webdriver from selenium.webdriver.support.ui import Select driver = webdriver.Firefox() driver.get('url') select = Select(driver.find_element_by_id('fruits01')) # select by visible text select.select_by_visible_text('Banana') # select by value select.select_by_value('1') 

Смотрите также:

  • Каков правильный способ выбора использования Selenium Python WebDriver?

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

  #identify the drop down element elem = browser.find_element_by_name(objectVal) for option in elem.find_elements_by_tag_name('option'): if option.text == value: break else: ARROW_DOWN = u'\ue015' elem.send_keys(ARROW_DOWN) 

Лучший способ использовать selenium.webdriver.support.ui.Select класс для работы с выпадающим списком, но некоторое время он не работает должным образом из-за проблемы проектирования или других проблем HTML.

В этом типе ситуации вы также можете использовать альтернативное решение, используя execute_script() как execute_script() ниже:

 option_visible_text = "Banana" select = driver.find_element_by_id("fruits01") #now use this to select option from dropdown by visible text driver.execute_script("var select = arguments[0]; for(var i = 0; i < select.options.length; i++){ if(select.options[i].text == arguments[1]){ select.options[i].selected = true; } }", select, option_visible_text); 
 from selenium.webdriver.support.ui import Select driver = webdriver.Ie(".\\IEDriverServer.exe") driver.get("https://test.com") select = Select(driver.find_element_by_xpath("""//input[@name='n_name']""")) select.select_by_index(2) 

Он будет работать нормально

  • Команда Scrapyd-deploy не найдена после установки scrapyd
  • Как мне избежать данных из разных вкладок, которые должны быть объединены в одну ячейку, когда я очищаю таблицу?
  • Захват кодов статуса http с помощью scrapy spider
  • Рекурсивное использование Scrapy для удаления веб-страниц с веб-сайта
  • Загрузка веб-страницы в python ПОСЛЕ выполнения JavaScripts
  • Scrapy и Selenium представляют форму, которая динамически отображается
  • Получить только часть XML-фида
  • Запуск браузера селена на сервере (Flask / Python / Heroku)
  • Как получить URL-адрес неудачных попыток?
  • Как правильно использовать Selenium
  • scrapy: объект 'module' не имеет атрибута 'OP_SINGLE_ECDH_USE'
  • Python - лучший язык программирования в мире.