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

例如:

<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(…)来做,但它不起作用。


当前回答

在看了很多类似这篇文章之后,我设法想出了一个解决方案,让我可以在下拉列表中选择一个项目。我尝试了.send_keys,单击()和选择在各种方式没有成功。最后,在单击下拉列表中的项目之前,向下拉列表发送了3次click()命令。

dropMenu = browser.find_element_by_id('cmbDeviceType')
dropMenu.click()
dropMenu.click()
dropMenu.click()

deviceType = browser.find_element_by_id('cmbDeviceType_DDD_L_LBI16T0')
deviceType.click()

绝对不是很漂亮,但是很好用。

希望这能帮助到一些人。这是在Firefox 88.0.1上使用Python3.7.7完成的。

其他回答

下拉菜单WITHOUT <select>

这适用于我每次面对没有<select>标签的下拉菜单

# Finds the dropdown option by its text
driver.find_element_by_xpath("//*[text()='text of the option']")

导入ActionChains模块

from selenium.webdriver.common.action_chains import ActionChains

使用ActionChains点击元素

drp_element = driver.find_element_by_xpath("//*[text()='text of the option']")
action = ActionChains(driver)
action.click(on_element=drp_element).perform()

根据提供的HTML:

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

要从html-select菜单中选择<option>元素,必须使用select类。此外,当你必须与下拉菜单交互时,你必须为element_to_be_clickable()诱导WebDriverWait。

要从下拉菜单中选择<选项>,文本为Mango,你可以使用以下定位器策略之一:

Using ID attribute and select_by_visible_text() method: from selenium import webdriver from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support.ui import Select select = Select(WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.ID, "fruits01")))) select.select_by_visible_text("Mango") Using CSS-SELECTOR and select_by_value() method: select = Select(WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "select.select[name='fruits']")))) select.select_by_value("2") Using XPATH and select_by_index() method: select = Select(WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "//select[@class='select' and @name='fruits']")))) select.select_by_index(2)

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)

它会正常工作的

我尝试了很多东西,但是我的下拉是在一个表中,我不能执行简单的选择操作。只有下面的解决方案有效。在这里,我突出显示下拉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)

以下方式您可以在下拉框中选择。

select=browser.find_element(by=By.XPATH,value='path to the dropdown')
 select.send_keys("Put value here to select it")