我是软件质量保证工程师,我正在尝试为网页创建自动化测试。
某些背景:
我公司使用的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。但这似乎并不是他们想要走下去的道路......
可能的解决方案:
如果是,那么也可以组合多个X路径 像......那样......
//div[@class='col-sm-4'].... //div[contains(.,'Birth Date: Set +')]
我的想法是,我可以创建一个缩小Selenium实际上会看到的Xpath。
答案 0 :(得分:1)
你会想要这样的东西:
//div[@class='col-sm-4'][.//*[contains(text(), 'Birth Date')]]//a
含义选择div
的{{1}}的链接,其中class
的值为col-sm-4
且包含指定的文字。
或者它也可以这样工作:
//div[contains(text(), 'Birth Date')]/a
答案 1 :(得分:1)
我相信你已经问过这个问题了,我们已经回答了。
但这里有多种解决方案:
//div[@class='col-sm-4' and contains(text(),'Birth Date')]/div/a
//div[contains(@class,'col-sm-4') and contains(text(),'Birth Date']//a
还有更多选择。请尝试访问w3schools.com以了解有关xpath的更多信息。
答案 2 :(得分:1)
首先找到带有'col-sm-4'类的 div ,将文本定位为'出生日期:',然后在其下找到带有文字'Set +'的链接,任何可以使用以下XPATH:
//div[@class='col-sm-4' and contains(text(),'Birth Date')]/descendant::a[1]
或者
//div[@class='col-sm-4' and contains(text(),'Birth Date')]/descendant::a[contains(text(),'Set +')][1]
或者
//div[@class='col-sm-4' and contains(text(),'Birth Date')]/descendant::a[text()='Set +'][1]