python selenium:迭代通过具有动态ID和选择的单选按钮

时间:2017-01-04 22:59:47

标签: python selenium-webdriver

使用python + Selenium Web Driver,我试图自动选择保险网站的某些单选按钮。问题是单选按钮的ID是动态的。例如,当生成新的保险申请时,会生成新页面,并且屏幕上的单选按钮具有动态创建的ID(请参阅下面的HTML示例)

delete a
from tablea a
join tableb b on a.id=b.id

所以,使用上面的例子,我想点击带有id" subj_received_33965"的单选按钮。但是,由于元素是动态生成的,因此在下一次自动运行时id将不同(并且脚本将失败)。

我该怎么做才能让脚本始终只点击以" subj_received _"开头的元素。在此页面上或者只选择值为"已收到"?

的元素

由于

2 个答案:

答案 0 :(得分:2)

您始终可以通过CSS选择器或XPath应用部分匹配:

driver.find_element_by_css_selector("input[id^=subj_received]")
driver.find_element_by_css_selector("input[id*=subj_received]")

其中^=表示"以"开头,*=表示"包含"。

如果您想查看value属性:

driver.find_element_by_css_selector("input[value=received]")

你可以检查两个:

driver.find_element_by_css_selector("input[value=received][id^=subj_received]")

答案 1 :(得分:0)

来自alecxe的输入帮助我找到了可行的解决方案。

我还让开发人员在id中添加一个整数值,这有助于找到正确的id。

以下代码段

button = self.driver.find_element_by_css_selector('[id*="2_subj_received_"]')
button.click()

感谢。