为何XPath统计包含指定子串的元素数量时返回错误结果
统计结果异常的原因
你使用的XPath表达式//*[contains(.,"25516.B1-")]会匹配到大量非预期节点:
- XPath语法中
.指代当前节点的完整字符串值,会自动拼接该节点下所有子孙节点的文本内容。只要某个子节点包含目标文本,它的所有上层父节点(比如外层的div、body、整个html根节点)的字符串值都会包含该目标文本,都会被判定为符合匹配条件,所以最终统计值远大于实际的3个目标元素。
修复方案
如果要仅统计直接包含目标文本的元素,可以调整XPath为仅校验节点自身的直接文本内容:
# 匹配直接子文本节点包含目标内容的元素 ${count}= Get Element Count //*[text()[contains(.,"25516.B1-")]] Log To Console ${count}
如果需要排除空格、换行符的干扰,还可以加上文本标准化处理:
# 先去除文本前后的空白再匹配 ${count}= Get Element Count //*[contains(normalize-space(.),"25516.B1-")]
内容的提问来源于stack exchange,提问作者Mwiendels
相关产品推荐
相关产品推荐

