
本文介绍如何通过xpath精准匹配具有相同父结构但不同索引的同类型子元素(如 img[1] 和 img[2]),并统一筛选其 src 属性包含 "red" 的实例,避免硬编码索引,提升定位稳定性与可维护性。
在自动化测试(如 Selenium)中,若两个目标
元素位于完全相同的 DOM 路径下,仅靠位置索引区分(如 img[1] 和 img[2]),则直接依赖索引的 XPath 易受页面结构微调影响,且无法满足“动态判断是否含 red”的业务需求——因为你真正关心的是状态(disabled 后 src 是否含 red),而非固定序号。
此时,更健壮的策略是基于语义属性进行定位。既然两个元素共有的关键判定条件是 src 属性值包含字符串 "red",那么应优先利用 contains(@src, 'red') 这一函数式谓词,而非位置索引。
✅ 推荐通用 XPath 表达式如下:
//div[@class='name-slider-header']//button//img[contains(@src, 'red')]
该表达式将同时匹配所有满足以下全部条件的
元素:
- 父级存在 class="name-slider-header" 的
;
- 该
内嵌套