首页 > 解决方案 > Python 3 Selenium 从具有相同 ID 但不同值的下拉菜单中选择

问题描述

我正在使用 Firefox,并希望从下拉菜单中单击所选文本。于是我打开了optgroup,想选这个:

<option value="WSS" id="A5">[PREMIUM] WSS (wss://)</option>

有不同的值,只是具有另一个值,但 ID 相同。

我试过这个但没有成功:

select = Select(driver.find_element_by_id('A5'))
select.select_by_value("WSS")
select.select_by_visible_text("visible text/the shown text on the drop down menu")
select.select_by_value('WSS') 

标签: pythonpython-3.xseleniumselenium-webdriver

解决方案


您可以尝试获取在 HTML 代码中必须是“选择”的父对象(使用“./..”)并列出所有可能的选项。它避免了您的多个 id 的问题。

尝试这个:

yourValue = "WSS"
listOptions = driver.find_elements_by_xpath("//option[@id='A5']/./../option")
for option in listOptions:
    if option.text == yourValue: # if wrong test "if option.get_attribute("innerText") == yourValue:"
        indexed = listOptions.index(option)
        break
Select(driver.find_elements_by_xpath("//option[@id='A5']/./..]")).select_by_index(indexed)

我直接在这里写的,它可能是错误的,不要犹豫,用更多的 HTML 代码给你的反馈,它会有所帮助;)


推荐阅读