首页 > 解决方案 > 使用父级和兄弟级的 WebTable 的 Selenium XPath

问题描述

我正在尝试自动化 demoqa 网站https://demoqa.com/webtables上的 web 表格,我的目标是单击特定用户的编辑和删除按钮。请找到随附的屏幕截图以供参考。

截屏

我正在尝试单击用户“Cierra”的编辑和删除按钮,因此我创建了自定义 XPath '//div[contains(text(),'cierra@example.com')]//following::div[ text()='保险']//following::div//div//span[@title='编辑']'

尝试使用包含电子邮件“cierra@example.com”的包含文本单击编辑和删除按钮,但是即使我使用唯一的用户名,我也会看到四个结果。谁能帮我解决这个问题?

标签: seleniumselenium-webdriverxpath

解决方案


(//div[contains(text(),'cierra@example.com')]//following::div[text()='Insurance']//following::div//div//span[@title='Edit'])[1]

您可以将结果括在括号中并调用 [1] ,以获得第一个:

但是您不必过于复杂化,只需获取电子邮件然后返回父级并在该父级下获得跨度,:

//div[contains(text(),'cierra@example.com')]/..//span[@title="Edit"]

如果您仍想使用花哨的 xpath 定位器,请使用:

//div[contains(text(),'cierra@example.com')]/following-sibling::div[contains(text(),'Insurance')]/following-sibling::div//span[@title='Edit']

推荐阅读