xpath定位详解

###############################################

复制代码
xpath学习
1,绝对路径:就是html文件从html一直到标签,所有的层级都包含,这就是绝对路径,绝对路径是/开始的,
2,相对路径,就是不需要全都写,相对路径是//开始的,

//后面要跟标签名称或者*,这是一个关键点,

1,相对路径和属性定位
使用属性的时候,一定要使用@来修饰,id,name,class_name都是一样的用法,只要是属性都能用,
//*[@id='user']
可以使用firebug生成,但是你懂了原理之后,完全可以自己写,

2,属性和层级定位
//*[@id='user']/input,这就是结合使用

3,属性和逻辑结合
//*[@id='user' and @name='user']

复制代码

 

##############################################

复制代码
xpath延伸
1,可以通过文本来定位, //*[text()='username']

2,//*[starts-with(@attribute,'XXX')] 属性值以XXX开头的元素

3,//*[contains(@attribute,'XXX')] 属性值包含XXX的元素,
比如:
//*[@id="editorbox"]/ul/li/a[contains(text(), "发起")]
复制代码

 

#######

取xpath最后一个book元素
book[last()]

 
取xpath最后第二个book元素
book[last()-1]

 

#####

原来contains也是可以选择第几个元素的,关键是要加括号啊
(//p[contains(@class,'userName')]/a)[1]

 

 

####

xpath获取当前标签的兄弟节点,父节点

<div> <a id="1" href="www.baidu.com">我是第1个a标签</a> <p>我是p标签</p> <a id="2" href="www.baidu.com">我是第2个a标签</a> <a id="3" href="www.baidu.com">我是第3个a标签</a> <a id="4" href="www.baidu.com">我是第4个a标签</a> <p>我是p标签</p> <a id="5" href="www.baidu.com">我是第5个a标签</a> </div>


获取第三个a标签的下一个a标签:"//a[@id='3']/following-sibling::a[1]" 获取第三个a标签后面的第N个标签:"//a[@id='3']/following-sibling::*[N]" 获取第三个a标签的上一个a标签:"//a[@id='3']/preceding-sibling::a[1]" 获取第三个a标签的前面的第N个标签:"//a[@id='3']/preceding-sibling::*[N]" 获取第三个a标签的父标签:"//a[@id=='3']/.."

 

 

 

 

 

 ####

posted @ 2021-02-24 18:05  技术改变命运Andy  阅读(337)  评论(0编辑  收藏  举报