浏览器复制Xpath定位失败的原因:
①有的元素没有id,name,class等明显或者唯一属性
②元素id是动态的
③元素定位工具抓取不到(copy–>xpath)
④复制的Xpath是不稳定的
Xpath的思想:
通过路径找节点(元素属性,内容)
Xpath技巧
语法规则
/ 根节点,节点分隔符(完全匹配)
// 任意位置(跨节点寻找)
@ 属性
* 任意元素
. 当前节点
… 父节点
text文本值
②格式
属性://*[@属性=‘属性值’]
文本值://*[text()=‘文本值’]
高级查询
contains模糊查询:contains(@属性/text(),值)
//*[contains(text(),‘院系专业’)]
//*[contains(@href,‘baidu’)]
starts-with():匹配一个属性开始位置的关键字,以xxx开始:属性、文本值,(适用:元素id是动态的)
//*[start-with(@id,‘success’)]
//*[start-with(text(),‘练习’)]
上下级查询
//*[@type=‘password’]/…/…
#去到这个部分的父节点,就是一层一层的往上查找
#适用:寻找的元素不稳定,用它的上下级定位
多种条件精准查找
//*[@class=‘mnav’ and @type=‘password’]
特殊元素:
svg:name属性
//*[name()=‘svg’]