使用 selenium Python 库单击下拉菜单中的项目

Click an item in a drop-down menu using selenium Python library

我正在尝试 select 下拉菜单中的元素。我尝试使用 "driver.find_element_by_xpath" 调用来定位列表中的项目。问题是我不能 select 它。我尝试了“.click()”调用,但错误提示该元素不可交互。我如何 select 给定下图中 HTML 代码的项目?

试试这个,点击 ul 标签,然后点击你想要 select 的下拉列表 li。

如果是JS自带的,点击下拉获取li值,否则直接点击与你的值匹配的li值

    element_dropdown = WebDriverWait(driver, 10).until(
        EC.element_to_be_clickable((By.CLASS_NAME, 'rcbList')))
   current_user_driver.execute_script("arguments[0].click();",element_dropdown)

    all_li_dropdown = WebDriverWait(driver, 10).until(
        EC.presence_of_all_elements_located((By.CLASS_NAME, 'rcbItem')))

    for single_li in all_li_dropdown:
        li_value = single_m_li.get_attribute("innerHTML")
        if li_value == "your_value":
            driver.execute_script("arguments[0].click();", single_li)
            break

您应该粘贴您使用的代码以帮助理解您在做什么。

但仅凭您的解释,我会说您可能需要单击保管箱,以便列表可见且可单击。

然后点击你想要的项目。

Python

driver.find_element_by_name('rcbScroll rcbWidth').click()
driver.find_element_by_name('rcbHovered').click()

Java

driver.findElement(By.className("rcbScroll rcbWidth")).click();
driver.findElement(By.className("rcbHovered")).click();

我找到了解决办法。由于下拉菜单被编码为 "input" HTML 标签,传统的 select Python 方法不起作用,因为它仅适用于 "select" HTML标签。但是 .send_keys 方法工作得很好。所以下面的简单代码就可以解决问题:

variable_name = driver.find_element_by_xpath('xpath of an <input> element in HTML code')
variable_name.click() #Clicks on the drop down button
variable_name.send_keys("text of an option in the drop down list") #sends text of an option in the drop down