**
下面是我在之前中兴做自动化测试时,关于遇见元素定位问题的解决方法总结,希望对大家有用
**
A.直接定位标签
//input #//标识定位到某一个标签,//*则代表所有标签,//input则定位所有input标签
B.标签+属性匹配
//input[@id='kw'] 或者//input[@type='text'] #由一个标签+某一个属性的组合 ,其中@代表匹配属性名称,相当于匹配所有的input标签并匹配属性id=kw的元素
C.标签和多个属性
//input[@id='kw' and @type='text'] #由一个标签+多个属性的组合,相当于匹配了所有的input标签并匹配属性id=kw且属性type=text的元素
//input[@id='kw' or @type='text'] #由一个标签+多个属性的组合,相当于匹配了所有的input标签,并匹配属性id=kw或者属性type=text的元素
D.父子定位
//form[@id="form"]/input #相当于先定位到了父节点,再找到对应的子节点,常用语当前元素不易定位而父节点较易定位的情况
E.contains
//input[contains(@id,'w')] #相当于匹配了所有的input标签且id属性包含字符串"w"的元素 (模糊定位)
//a[contains(text(),'新闻')] #相当于匹配了所有的input标签且文本包含"新闻" (模糊定位)
F.start-with和ends-with
//input[starts-with(@id,'k')] #相当于匹配了所有的input标签且属性id以字母k开头的元素 (模糊定位)
//input[ends-with(@id,'w')] #相当于匹配了所有的input标签且属性id以字母w结尾的元素 (模糊定位)
G.文本定位
//a[text()='新闻'] #精准定位到本文属性,contains则是模糊定位
H.关系定位方式(通过子节点找父节点、爷节点;兄弟节点或者堂兄弟等等)
1.子节点找父节点
//input[@id="kw"]/.. #相当于我们精确定位到了查询输入框,然后找他的父节点,往回走一层(根据层级关系)
//input[@id="kw"]/parent::span
2.兄弟节点
//input[@id="kw"]/../span #相当于找到了父节点再往下找子节点(兄弟节点)
//input[@id="kw"]/following-sibling::a #往下找兄弟节点,也可以写//input[@id="kw"]/following-sibling::a[1],定位到后面的第几个a标签
//input[@id="kw"]/preceding-sibling::span #往上找兄弟节点,也可以写//input[@id="kw"]/preceding-sibling::span[1],定位到前面的第几个span标签```