xpath语法

1、常用的路径表达式

xpath语法

 

 

 

2、绝对定位和相对定位

绝对路径:从根节点html开始

相对路径:每次只需从第一个已经找到的节点开始

绝对路径的劣势:如果前端经常变化,如增加了div,表达式下次就不能用了

 

3、谓语

谓语用来查找某个特定的节点或者包含某个指定的值的节点

谓语被嵌在方括号中

① 索引取值

找到多个节点时可以使用

这里的索引下标从1开始而不是0;索引的优先级比 // 高,建议使用索引的时候把前面的部分括号括起来

如:(//div[@class='c-tips-container'])[1]

② 有某个属性

如://input[@value]

③ 属性为某个特定值

如://input[@value=‘kw’]

④ 子元素中属性为某个特定值

如://div[div/@id='wrapper_wrapper']

xpath语法

 

⑤ 文本

如://a[text()='新闻']

⑥ 选取未知节点

如://title[@*]   表示:选取所有带有属性的 title 元素

 

4、运算符

xpath语法

如://a[@class='nav-block' and @title='京东' and @target='_blank']

   //span[text()='推荐' or text()='导航']

 

5、函数

介绍其中三个:

text():获取节点的文本内容,如://a[text()='新闻']

starts-with(str1,str2)     str1是否以str2开头,如://input[starts-with(@value,'百度')]              表示:value属性以百度开头的input标签

contains(str1,str2)    str1是否包含str2,如://input[contains(@value,'百度')]              表示:value属性包含百度的input标签

                                                                   //a[contains(text(),'抗击')]             表示:文本内容包含抗击的a标签

 

6、轴定位

xpath语法

 

如:定位id=form的form节点中 子元素中name='issp'的input标签 
//form[@id='form']/child::input[@name='issp'] --> 定位的是input标签,这个input标签是form[@id='form']的子元素,同时name属性是issp

如:定位id=form的form节点中 祖先元素中id='wrapper'的div标签
//form[@id='form']/ancestor::div[@id='wrapper'] --> 定位的是div标签,这个div标签是form[@id='form']的祖先元素(爸爸、爷爷等都行),同时id属性是wrapper



以上的语法在网页页面 f12-elements-ctrl+f 搜索框中敲入,能够定位到目标节点则说明xpath语法正确
在selenium中,用driver.find_element(by=By.XPATH, value="xpath语句")即可实现定位
 

 

上一篇:flask获取post请求参数


下一篇:form表单中的路径问题