使用Xpath定位元素失败:编写的Xpath不具备唯一性
唯一匹配Columns元素的XPath编写方案
你之前用的//span[text()='Columns']会匹配页面内所有文本为Columns的span元素,所以无法精确定位,你可以通过以下几种方式组合过滤条件实现唯一匹配:
- 先处理文本隐藏空格,避免因为前后空格导致多匹配:
//span[normalize-space(text())='Columns'] - 叠加元素自身的独有属性过滤:
该元素是下拉触发按钮,一般会有role、aria-haspopup这类交互属性,你可以在F12元素面板查看该元素的独有属性后叠加到条件里,示例://span[normalize-space(text())='Columns' and @role='button' and @aria-haspopup='listbox'] - 结合上层唯一容器定位:
先找到目标元素上层带有唯一id、唯一class或者自定义data属性的容器,先定位容器再向下找目标,示例(替换为你实际的上层容器属性即可)://div[@id='table-operation-bar']//span[normalize-space(text())='Columns'] - 结合相邻节点特征过滤:
如果目标元素前后有独有的兄弟元素(如下拉箭头图标、下拉菜单容器),可以组合相邻节点条件过滤,示例://span[normalize-space(text())='Columns' and preceding-sibling::i[contains(@class,'dropdown-icon')]]
编写完成后可以在浏览器F12的Elements面板按Ctrl+F,粘贴Xpath验证匹配数量,匹配结果为1即可正常使用。
内容的提问来源于stack exchange,提问作者Yamini
相关产品推荐
相关产品推荐

