什么是 XPath?
XPath 使用路径表达式在 XML 文档中进行导航, 使用路径表达式来选取 XML 文档中的节点或者节点集。这些路径表达式和我们在常规的电脑文件系统中看到的表达式非常相似。
- XPath 包含一个标准函数库,含有超过 100 个内建的函数。
- Xpath 是selenium 自动化中重要的部分
Xpath 节点
image.png- <bookstore> (文档节点)
- <author>J K. Rowling</author> (元素节点)
- lang="en" (属性节点)
- J K. Rowling 和 “en”(基本值/文本内容)
节点关系
image.png- 父节点/先辈节点:在上面的例子中,book 元素是 title、author、year 以及 price 元素的父。
- 子节点/后代节点:在上面的例子中,title、author、year 以及 price 元素是book元素的子节点
- 同胞节点: title、author、year 以及 price 为同胞节点
xpath 样例一
绝对路径:路径以斜线/开始:到一个元素的路径是绝对路径
image.png- /html/body/div[1]/object/param[1]:html下body下的第一个div下的object下的第一个param元素
- 注意:在项目中避免使用上面这样的绝对路径,可以换成相对路径(如下个PPT中的路径)
xpath 样例二
相对路径:路径以双斜线//开始:选择所有满足//之后规则的元素
image.png- //object/param[@name=‘movie‘]:所有以object为父节点并且name属性是’movie’的param元素
xpath 样例三
星号 * 表示选择所有由星号之前的路径所定位的元素
- //body/div/* :所有以body下div为父节点的元素
-
//* :所有元素
image.png
xpath 样例四
属性通过@前缀来指定
image.png- //div[@id='home']:id属性为home的div元素
- //@id:所有的id属性
- //div[@*] :有任意属性的div元素
- //div[not(@*)] :没有属性的div元素
xpath 样例五
用两个或两个以上属性来定位同一个元素
image.png- //input[@class=‘c-input’][@size=’35’]:两个属性定位
- //input[…][…][….]:三个属性来定位
xpath 样例六
normalize-space函数删除了前部和尾部的空格, 并且把连续的空格串替换为一个单一的空格
image.png- //BBB[normalize-space(@name)=‘bbb’] :含有属性name且其值(在用normalize-space函数去掉前后空格后)为'bbb'的BBB元素
xpath 样例七
image.png- //*[text()=‘搜索车票’]:选择所有文本为‘搜索车票’的元素
xpath 样例八
image.png- //*[starts-with(@id,'h')]:选择所有id属性以“h”开头的元素
xpath 样例九
image.png- //*[contains(@class,‘jumbo’)]:选择所有class属性包含‘jumbo’的元素
未完待续~~~,还会更新一些在表格中的定位方式
网友评论