xpath教程
需先掌握xpath文档才能更好的理解自动化测试执行过程
官方文档:ZVON.org
1.基本的XPath语法类似于在一个文件系统中定位文件,如果路径以 / 开始,那么该路径就表示到一个元素的绝对路径。
/AAA |
选择根元素AAA |
<AAA> <BBB/> <CCC/> <DDD> <BBB/> <DDD/> <CCC/> </AAA> |
/AAA/CCC |
选择根元素AAA的所有CCC子元素 |
<AAA> <BBB/> <CCC/> <DDD> <BBB/> <DDD/> <CCC/> </AAA> |
2.如果路径以 // 开头,则表示选择文档中所有满足 // 之后规则的元素(无论层级关系),即 // 后的是匹配的通配符,返回所有满足这个路径条件的节点。
//BBB |
选择所有BBB元素 |
<AAA> <BBB/> <CCC/> <DDD> <BBB/> <DDD/> <CCC/> </AAA> |
//DDD/BBB |
选择所有父元素是DDD的BBB元素 |
<AAA> <BBB/> <CCC/> <BBB/> <DDD> <BBB/> <DDD/> <CCC> <DDD> <BBB/> <BBB/> <DDD/> </CCC> </AAA> |
3.星号 * 表示选择所有由星号之前的路径所定位的元素
/AAA/CCC/DDD/* |
选择所有路径依附于/AAA/CCC/DDD的元素 |
<AAA> <XXX> <DDD> <BBB/> <BBB/> <EEE/> <FFF/> </DDD> </XXX> <CCC> <DDD> <BBB/> <BBB/> <EEE/> <FFF/> </DDD> </CCC> </AAA> |
/*/*/*/BBB |
选择所有的有3个祖先元素的BBB元素 |
<AAA> <XXX> <DDD> <BBB/> <BBB/> <EEE/> <FFF/> </DDD> </XXX> <CCC> <DDD> <BBB/> <BBB/> <EEE/> <FFF/> </DDD> </CCC> </AAA> |
//* |
选择所有元素 |
<AAA> <XXX> <DDD> <BBB/> <BBB/> <EEE/> <FFF/> </DDD> </XXX> <CCC> <DDD> <BBB/> <BBB/> <EEE/> <FFF/> </DDD> </CCC> </AAA> |
4.方括号里的表达式可以进一步的指定元素,其中数字表示元素在选择集里的位置,而last()函数则表示选择集中的最后一个元素,从1开始。
//AAA/BBB[1] |
选择AAA的第一个BBB子元素 |
<AAA> <BBB/> <BBB/> <BBB/> <BBB/> </AAA> |
//AAA/BBB[last()] |
选择AAA的最后一个BBB子元素 |
<AAA> <BBB/> <BBB/> <BBB/> <BBB/> </AAA> |
5.@xxx表示选择属性为xxx的元素
//@id |
选择所有的id属性,这里返回的是Attribute属性对象,而不是节点Node对象 |
<AAA> <BBB id = "b1" /> <BBB id = "b2" /> <BBB name = "bbb"/> <BBB/> </AAA> |
//BBB[@id] |
选择有id属性的BBB元素 |
<AAA> <BBB id = "b1" /> <BBB id = "b2" /> <BBB name = "bbb" /> <BBB/> </AAA> |
//BBB[@name] |
选择有name属性的BBB元素 |
<AAA> <BBB id = "b1" /> <BBB id = "b2" /> <BBB name = "bbb" /> <BBB/> </AAA> |
//BBB[@*] |
选择有任意属性的BBB元素 |
<AAA> <BBB id = "b1" /> <BBB id = "b2" /> <BBB name = "bbb" /> <BBB/> </AAA> |
//BBB[not(@*)] |