Xpath搜索是否有规范格式?Selenium自动化中写法优选咨询
Selenium XPath类名定位的写法选择
你遇到的两种XPath写法,核心是精确匹配和模糊匹配的区别,没有绝对的优劣,得看元素的实际情况来选:
精确匹配(
@class='flash error'):如果元素的class属性值固定不变,比如你例子里的错误提示框,class就是flash error不会有变动,那优先用这种写法。它定位精准,不会误匹配其他包含相似类名的元素,而且XPath引擎查找速度更快,性能更优。模糊匹配(
contains(@class,'sign-in')):这种写法专门应对class动态变化的场景——比如按钮的class可能是sign-in,也可能是sign-in active或者sign-in disabled(会动态添加状态类),这时候用contains就能匹配到包含sign-in的元素,避免因为额外类名导致定位失败。
但用contains要注意避坑:如果页面上有sign-in和sign-in-modal这类相似类名,直接用contains(@class,'sign-in')会同时匹配到两个元素。这时候可以优化成contains(concat(' ', @class, ' '), ' sign-in '),通过拼接空格来匹配完整的类名片段,就不会误匹配带后缀的类了。
另外提个小技巧:如果元素有id(比如你例子里的错误提示框id是flash),直接用//div[@id='flash']定位更高效——因为id是页面唯一的,XPath查找速度更快,代码也更简洁,没必要同时匹配class和id。
内容的提问来源于stack exchange,提问作者Abdul Qader
相关产品推荐
相关产品推荐

