如何组合两条XPath精准定位含'Audit Follow-up'文本的div元素?
精准定位包含指定文本和类的div元素
你可以直接将两个匹配条件组合到同一条XPath中,以此缩小匹配范围,精准定位目标元素。
基础组合XPath
//div[contains(@class, 'section-text font-bold') and contains(., 'Audit Follow-up')]
这条表达式会同时筛选出包含指定类名且文本内容包含目标字符串的div元素,应该能直接定位到你要的单个元素。
更严谨的优化版本
如果页面中存在类名顺序变化、类名包含子串(比如section-text-other),或者文本前后有空格的情况,可以用更精确的匹配逻辑:
//div[ contains(concat(' ', @class, ' '), ' section-text ') and contains(concat(' ', @class, ' '), ' font-bold ') and normalize-space(.) = 'Audit Follow-up' ]
concat(' ', @class, ' '):给类名前后加空格,确保匹配的是完整的类名,避免误匹配包含目标类名字符的其他类normalize-space(.):去除文本内容的前后空格和内部多余空格,实现文本的精确匹配,不受原文本空格影响
补充说明
- 单独用类匹配返回4个元素:说明页面有4个div符合类名条件,但只有一个是目标文本
- 单独用文本匹配返回7个元素:说明有7个div包含目标文本,但类名不符合要求
组合两个条件后,就能同时满足类和文本的双重要求,从而定位到唯一的目标元素。
内容的提问来源于stack exchange,提问作者DarthOpto
相关产品推荐
相关产品推荐

