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

时间:2014-01-16 08:21:39

标签: python-2.7 selenium-webdriver

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

在上面的代码中,id对于input,select是相同的。我需要在select中选择一个值。是否有可能通过使用python的selenium webdriver?

1 个答案:

答案 0 :(得分:1)

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

关于“如何通过id结合样式标签找到元素”的问题,以下是如何实现它的。

使用CSS选择器

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

使用XPath

driver.find_element_by_xpath(".//select[@id='Proc#fr#2-1-111' and not(contains(@style, 'display: none'))]")