我需要从下拉菜单中选择一个元素。

例如:

<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()

2)之后,我必须选择好的元素,让我们说芒果。

我尝试用inputElementFruits.send_keys(…)来做,但它不起作用。


当前回答

我希望这段代码对您有所帮助。

from selenium.webdriver.support.ui import Select

带有id的下拉元素

ddelement= Select(driver.find_element_by_id('id_of_element'))

使用xpath的下拉元素

ddelement= Select(driver.find_element_by_xpath('xpath_of_element'))

下拉元素与CSS选择器

ddelement= Select(driver.find_element_by_css_selector('css_selector_of_element'))

从下拉菜单中选择“Banana”

使用下拉索引

ddelement.select_by_index (1)

使用下拉列表的值

ddelement.select_by_value (' 1 ')

您可以使用匹配下拉菜单中显示的文本。

ddelement.select_by_visible_text(香蕉)

其他回答

除非您的单击触发了某种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

我希望这段代码对您有所帮助。

from selenium.webdriver.support.ui import Select

带有id的下拉元素

ddelement= Select(driver.find_element_by_id('id_of_element'))

使用xpath的下拉元素

ddelement= Select(driver.find_element_by_xpath('xpath_of_element'))

下拉元素与CSS选择器

ddelement= Select(driver.find_element_by_css_selector('css_selector_of_element'))

从下拉菜单中选择“Banana”

使用下拉索引

ddelement.select_by_index (1)

使用下拉列表的值

ddelement.select_by_value (' 1 ')

您可以使用匹配下拉菜单中显示的文本。

ddelement.select_by_visible_text(香蕉)

dropdown1 = Select(driver.find_element_by_name("fruits"))
dropdown1.select_by_visible_text('banana')

我尝试了很多东西,但是我的下拉是在一个表中,我不能执行简单的选择操作。只有下面的解决方案有效。在这里,我突出显示下拉elem和按下箭头,直到得到所需的值-

        #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)
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)

它会正常工作的