之前写过一些关于元素定位的文章,但是感觉都是很碎片,现在想做个整合,便有了这篇文章。
关于Xpath定位方法,网上写的已经很成熟了,现已百度首页为例,如下图:

再结合我之前所写整理如下。
/html/body/div[1]/div[2]/div[5]/div[1]/div/form/span[1]/input
//input
//input[4]
使用xpath属性定位(结合第2、第3中方法可以使用)
//input[@id=‘kw‘]
//input[@type=‘name‘ and @name=‘kw‘]
//input[starts-with(@id,‘k‘)] 
//input[ends-with(@id,‘w‘)] 
xpath中的ends-with无效,原因如下:
ends-with是xpath2.0的语法,可能你的浏览器还只支持1.0的语法
//input[contains(@id,‘w‘)]
//a[text()=‘直播‘]
//div[contains(@id,‘in‘)] ,表示选择id中包含有’in’的div节点
//a[text()=‘baidu‘] ,用text()函数来匹配节点
book[last()] ,取xpath最后一个book元素
book[last()-1] ,取xpath最后第二个book元素
//div[starts-with(@id,‘in‘)] ,表示选择以’in’开头的id属性的div节点
not()函数,表示否定
//input[@name=‘identity’ and not(contains(@class,‘a’))] ,表示匹配出name为identity并且class的值中不包含a的input节点。
特别注意
not()函数通常与返回值为true or false的函数组合起来用contains(),starts-with()等,但有一种特别情况请注意一下。
我们要匹配出input节点含有id属性的,写法如下://input[@id],如果我们要匹配出input节点不含用id属性的,则为://input[not(@id)]。
原文:https://www.cnblogs.com/longronglang/p/15048286.html