目录
二、ancestor-or-self: 选取当前节点的所有先辈(父、祖父等)以及当前节点本身
五、descendant:选取当前节点的所有后代元素(子、孙等)
六、descendant-or-self:选取当前节点的所有后代元素(子、孙等)以及当前节点本身
七、following:当前元素节点标签之后的所有节点(html页面先后顺序)
八、preceding-sibling:当前元素节点之前的同级节点
十、 parent 选取当前节点的父节点 上层父节点,只有一个
十一、preceding:当前元素节点标签之前的所有节点(html页面先后顺序)
十二、following-sibling:当前元素节点之后的同级节点
前言:web自动化过程当中xpath定位基本解决了90%以上问题,轴定位的灵活使用,会在定位元素的稳定性上面得到极大的作用
XPath 轴(Axes)
一、定义:轴可定义相对于当前节点的节点集。
轴名称 | 结果 |
---|---|
ancestor | 选取当前节点的所有先辈(父、祖父等)。 |
ancestor-or-self | 选取当前节点的所有先辈(父、祖父等)以及当前节点本身。 |
attribute | 选取当前节点的所有属性。 |
child | 选取当前节点的所有子元素。 |
descendant | 选取当前节点的所有后代元素(子、孙等)。 |
descendant-or-self | 选取当前节点的所有后代元素(子、孙等)以及当前节点本身。 |
following | 选取文档中当前节点的结束标签之后的所有节点。 |
following-sibling | 选取当前节点之后的所有兄弟节点 |
namespace | 选取当前节点的所有命名空间节点。 |
parent | 选取当前节点的父节点。 |
preceding | 选取文档中当前节点的开始标签之前的所有节点。 |
preceding-sibling | 选取当前节点之前的所有同级节点。 |
self | 选取当前节点。 |
二、语法:
轴名称::节点测试[索引]
一、ancestor 选取当前节点的所有先辈(父,祖父等)
//input[@id=‘kw’]//ancestor::span
二、ancestor-or-self: 选取当前节点的所有先辈(父、祖父等)以及当前节点本身
# 后期当前节点的父,祖父并包括自己的div标签
//div[contains(@class,‘aaa’)]/ancestor-or-self::div
三、attribute:选取当前节点的所有属性
获取当前节点的lang属性
//div[contains(@class,‘aaa’)]/attribute::lang
四、child:当前节点的下层所有的子节点
//span[@id=‘s_kw_wrap’]//child::span
五、descendant:选取当前节点的所有后代元素(子、孙等)
# 获取当前节点下的子孙节点div标签
//div[contains(@class,‘aaa’)]/descendant::div
六、descendant-or-self:选取当前节点的所有后代元素(子、孙等)以及当前节点本身
# 获取当前节点的的子孙包括自己的div标签
//div[contains(@class,‘aaa’)]/descendant-or-self::div
七、following:当前元素节点标签之后的所有节点(html页面先后顺序)
# 匹配到当前元素后面所有的span标签
//input[@id=‘kw’]//following::span
八、preceding-sibling:当前元素节点之前的同级节点
//input[@name=‘ie’]//preceding-sibling::input
九、namespace:选取当前节点的所有命名空间节点
略
十、 parent 选取当前节点的父节点 上层父节点,只有一个
//input[@id=‘kw’]//parent::span 同等于 //input[@id=‘kw’]//…
十一、preceding:当前元素节点标签之前的所有节点(html页面先后顺序)
# 匹配到当前元素前面所有的span标签
//input[@id=‘kw’]//preceding::span
十二、following-sibling:当前元素节点之后的同级节点
//input[@name=‘ie’]//following-sibling::input
十三、self:选取当前节点
# 获取当前节点本身
//div[contains(@class,‘bbb’)]/self:div
十四、轴组合使用
//span[@id=‘s_kw_wrap’]//child::span//following-sibling::input