欢迎访问我的博客,你的支持,是我最大的动力!

xpath用法整理

HTML 小马奔腾 4544℃ 评论
目录:
[显示]

最近在研究自动化测试框架selenium,在获取页面元素的时候,有一种方式是xpath(find_element_by_xpath/find_elements_by_xpath),但是自己对xpath的用法比较迷茫,所以专门找资料研究了一下。

xpath是在xml中查找信息的语言,可以在xml文档中对元素和属性进行遍历或导航。

xpath节点

节点(Node)类型:元素、属性、文本、命名空间、处理指令、注释、根节点(文档节点)

基本值,值,Atomic value,无父或无子的节点

项目,Item,基本值或节点

节点关系:父parent,子children,同胞sibling,先辈ancestor,后代descendant

xpath语法

xpath使用路径选取xml文档中节点或节点集,节点是通过沿路径(path)或步(steps)来选取的。

路径表达式 描述
nodename 选取此节点的所有子节点
 /  从根节点选取
 //  从匹配选择的当前节点选择文档中的节点 不考虑它们的位置
 .  选取当前节点
 ..  选取当前节点的父节点
 @  选取属性
谓语:广括号中,查找某个特定的节点或某个指定值的节点
<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>
<book>
<title lang="eng">Harry Potter</title>
<price>29.99</price>
</book>
<book>
<title lang="chs">Learning XML</title>
<price>39.95</price>
</book>
</bookstore>
实例:
bookstore,选取bookstore元素的所有子节点
/bookstore,选取根元素bookstore (绝对路径)
bookstore/book,选取bookstore的所有book元素
//book,选取所有book子元素,不管它们在文档中的位置
bookstore//book,选择bookstore的后代的所有book元素,不管它在bookstore下的位置
//@lang,选取名为lang的所有属性
/bookstore/book[1],第一个book元素
/bookstore/book[last()],最后一个book元素
/bookstore/book[last()-1],倒数第二个book元素
/bookstore/book[position()<3],前两个book元素
//title[@lang],title中拥有属性lang的元素
//title[@lang='eng']
/bookstore/book[price>35.00],bookstore元素的book元素,其中price元素值必须大于35.00
/bookstore/book[price>30]/title,满足条件的title元素

通配符

*,匹配任何元素节点
@*,匹配任何属性节点
node(),匹配任何类型的节点
实例
/bookstore/*,bookstore的所有子元素
//*,选取文档中的所有元素,每个级别
//title[@*],所有带属性的title元素

选取多个,在路径表达式中使用|运算符

//book/title|//book/price
//title|//price
/bookstore/book/title|//price
xpath轴

定义相对于当前节点的节点集

位置路径表达式

绝对位置路径:
/step/step/...
相对位置路径:
step/step/...
每个步均根据当前节点集之中的节点来进行计算
步包括:轴、节点测试、零个或多个谓语
步的语法为:
轴名称::节点测试[谓语]

xpath运算符

支持常见运算

|合并 +-*div mod余数

= != < <= > >= or and    #结果为布尔值

 

参考:

1、xPath 用法总结整理
https://blog.csdn.net/u013332124/article/details/80621638

2、XPath教程
http://www.w3school.com.cn/xpath/index.asp

3、xpath在线测试工具
https://codebeautify.org/Xpath-Tester   好用
http://www.bejson.com/testtools/xpath/  不太好用

转载请注明:轻风博客 » xpath用法整理

喜欢 (0)or分享 (0)