Python 2.7 当多个属性具有相同id时,如何检测“选择”选项

Python 2.7 当多个属性具有相同id时,如何检测“选择”选项,python-2.7,selenium-webdriver,Python 2.7,Selenium Webdriver,在上述代码中,id与输入相同,请选择。我需要在select中选择一个值。可以通过使用python的selenium webdriver吗?首先,这个HTML格式不好。应避免重复ID。如果您无权修改源代码,请与您的经理联系。Selenium开发人员应该能够在需要时更改源代码 对于如何通过means-id和style-tag组合查找元素的问题,下面是如何实现的 使用CSS选择器 <input id="Proc#fr#2-1-111" type="text" data-ctrl="JSCtrl"


在上述代码中,id与输入相同,请选择。我需要在select中选择一个值。可以通过使用python的selenium webdriver吗?

首先,这个HTML格式不好。应避免重复ID。如果您无权修改源代码,请与您的经理联系。Selenium开发人员应该能够在需要时更改源代码

对于如何通过means-id和style-tag组合查找元素的问题,下面是如何实现的

使用CSS选择器

<input id="Proc#fr#2-1-111" type="text" data-ctrl="JSCtrl" name="fr" style="display: none; background-color: rgb(224, 224, 224); width: 80px;" disabled=""/>
<select id="Proc#fr#2-1-111" data-ctrl="JSCtrl" name="fr" optionsdict="3,25 cm,4,29.97 cm,5,30 cm" style="border: 1px solid rgb(127, 157, 185); width: 80px;">
<select id="Proc#fr#2-1-111" data-ctrl="JSCtrl" name="fr" optionsdict="3,25 cm,4,29.97 cm,5,30 cm,6,50 cm,7,59.94 cm,8,60 cm" style="border: 1px solid rgb(127, 157, 185); display: none; width: 80px;" disabled="">
使用XPath

driver.find_element_by_css_selector("select[id='Proc#fr#2-1-111']:not([style*='display: none'])")

正确的解决方案是消除重复的ID。不能更改html代码。我需要找到现有html代码的select选项,该代码不是格式良好的html。Id不能重复。与其修复症状,不如修复来源。您是否会提前知道每个select的选项DICT值?如果是,那么可能有一个解决方案。请告诉我。您可以使用xpath。有两种方法可以做到这一点。第一个将涉及从输入标记的父项向下钻取。第二步你可以这样做//输入[@id='Procfr2-1-111'和@type='text']谢谢你的更新。我会尝试你给出的解决方案。根据HTML代码,这是遗留代码,所以我不能更改,但我会通知我的经理
driver.find_element_by_xpath(".//select[@id='Proc#fr#2-1-111' and not(contains(@style, 'display: none'))]")