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(...) но это не сработало.

770   6  

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

    Ничего не найдено.