UI 自动化测试过程中需要抓一些没有 ID
没有 NAME
的元素,通常会通过抓取 text()
的值来确定元素。
如
//*[text()="这是目标元素"]
但是,当使用 text()="这是目标元素"
的时候,有时候会由于开发代码不规范,或者在不同版本研发过程中使用了不同版本的样式框架,导致 text()
的内容出现了前后空格或者换行的情况,使得 text()="这是目标元素"
无法匹配到 text()=" 这是目标元素 "
的元素。
虽然可以使用 contains()
,但应尽量避免,以防止出现字符串真正出现包含的场景。
解决方案
使用
normalize-space()
如//*[normalize-space(text())="这是目标元素"]
normalize-space()
可以删除字符串前后的空格,有效避免上述情况导致的自动化代码异常。
网友评论