我是一名软件质量保证工程师,我正在尝试为网页创建一个自动化测试。
一些背景:
我公司使用的 Selenium 框架仅允许您使用保存为对象的 X 路径,然后您使用预先存在的方法,如“click(someobject)”或“enter(someobject)”等...
问题:
我目前正在尝试创建一个选择同一类上的多个按钮的测试。我需要选择 6 个设置按钮。现在我可以做到这一点,但使用:
`//*[@id="tenant-details-accordion"]/div[1]/div[2]/div/div[2]/div[1]/div/a
//*[@id="tenant-details-accordion"]/div[1]/div[2]/div/div[2]/div[2]/div/a
//*[@id="tenant-details-accordion"]/div[1]/div[2]/div/div[2]/div[3]/div/a
//*[@id="tenant-details-accordion"]/div[1]/div[2]/div/div[2]/div[4]/div/a
//*[@id="tenant-details-accordion"]/div[1]/div[2]/div/div[2]/div[5]/div/a
//*[@id="tenant-details-accordion"]/div[1]/div[2]/div/div[2]/div[6]/div/a`
- 然而这只是暂时的,因为当一个按钮被移除时,测试将在以后失败......我已经与开发团队讨论了为每个按钮添加唯一 ID。但这似乎不是他们想要走的路……
可能的解决方案:
- 是否可以缩小硒的“范围”?
例如,告诉 Selenium 查看特定类而不是整个页面?
- 我的想法是让它搜索一个类,匹配一个特定的文本,然后选择 Set。 如果是的话,那么也有可能组合多个X路径的 东西......
//div[@class='col-sm-4'].... //div[contains(.,'Birth Date: Set +')]
我的想法是我可以创建一个 Xpath 来缩小 Selenium 实际浏览的范围。
- 寻找班级
- 搜索文本“出生日期”
- 选择设置按钮