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>
Так что сначала я должен нажать на него. Я делаю это:
inputElementFruits = driver.find_element_by_xpath("//select["id='fruits']).click()
(ок, это открытие меню)
- и после того, как я должен выбрать хороший элемент, скажем, манго. Я пробую разные вещи с
inputElementFruits.send_keys(...)но это не сработало.
6 ответов:
Если ваш щелчок не запускает какой-то вызов 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
селен обеспечивает удобный
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')Читайте также:
сначала вам нужно импортировать класс Select, а затем вам нужно создать экземпляр класса Select. После создания экземпляра Select class можно выполнить select методы на этом экземпляре, чтобы выбрать параметры из выпадающего списка. Вот код
from selenium.webdriver.support.select import Select select_fr = Select(driver.find_element_by_id("fruits01")) select_fr.select_by_index(0)
Я пробовал много много вещей, но мой выпадающий список был внутри таблицы, и я не смог выполнить простую операцию выбора. Только ниже решение работало. Здесь я выделяю выпадающий элемент и нажимаю стрелку вниз до получения нужного значения -
#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()Как ниже :-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)Он будет работать нормально
Comments