Selenium-Java中无索引定位同属性SVG元素的解决方案
不依赖索引定位关联SVG元素的解决方案
完全可以通过关联的<span>Public</span>元素反向定位对应的SVG,以下是两种可靠的XPath写法,彻底摆脱索引依赖:
方案一:基于共同父节点定位
先定位到文本为"Public"的span,再向上找到它们共同的父容器,最后在容器内选取目标SVG://span[text()='Public']/ancestor::div[@class='tree-node has-child-nodes']/svg[@class='tree-node-icon']逻辑说明:
//span[text()='Public']:精准定位显示"Public"的span元素/ancestor::div[@class='tree-node has-child-nodes']:向上查找最近的、同时包含目标SVG和Public文本的父容器div/svg[@class='tree-node-icon']:从父容器中直接选取需要的SVG元素
方案二:基于兄弟节点关系定位
利用SVG和Public所在span的父节点是同级元素的特点,直接通过兄弟关系定位://span[text()='Public']/../preceding-sibling::svg[@class='tree-node-icon']逻辑说明:
//span[text()='Public']:定位到Public文本的span/..:回到该span的父节点(即<span class="tree-node-label">)/preceding-sibling::svg[@class='tree-node-icon']:选取父节点的前一个同级SVG元素,也就是目标图标
这两种写法都不会受UI新增元素的影响,只要Public文本和对应SVG的层级关系不变,就能始终准确定位目标元素。
内容的提问来源于stack exchange,提问作者Naresh p
相关产品推荐
相关产品推荐

