XPATH基本语法
1.XPATH与自动化之间的关系
1.XPATH是一门在XML文档中查找信息的语言。XPATH可用来在XML文档中对元素和属性进行遍历。
2.XPATH是用来选择“节点”的一种基于表达式的语言;
3.表达式的格式类似于文件系统,eg. C:\user\admin;
4.XPATH最常用的场景之一就是在自动化中用来选择HTML DOM 节点;
5.Selenium原生支持XPATH,因此也是selenium自动化测试中作为选择web 元素的主要方法之一;
2.XPATH简介
XPATH 包含一个标准函数库:XPATH含有超过100个内建的函数。可以处理字符串值,数值,日期和时间比较,节点和QName处理,序列处理,逻辑值等等。
3.XPATH术语
有7种类型的节点(Node):元素、属性、文本、命名空间、处理指令、注释、文档节点(或称为根节点).XML文档是被作为节点树来对待的,树的根被称为文档节点或根节点。基本值(Atomic value)是无父或无子的节点。项目(Item)是基本值或者节点。
XPATH节点:
XPATH术语:
– Parent:父节点
– Child:子节点
– Sibling:同胞节点
– Ancestor:先辈节点
– Descendant:后代节点
XPATH术语:
4.XPATH语法
xpath语法规则:
/ 根节点、节点分隔符
// 任意位置
* 任意元素
@ 属性
. 当前节点
.. 父级节点
text 文本值
格式:
属性: //*[@属性='属性值']
文本值: //*[text()='文本值']
高级查询:
contains模糊查询: contains(@class/text(),值)
starts-with 匹配一个属性开始位置的关键字
XPATH语法只有三类:
层级:/ 直接子集、// 跳级
属性:@ 属性访问
函数:contains()、text()等
4-1.选取节点
4-2.谓语(Predicates)
谓语用来查找某个特定的节点或者包含某个指定的值的节点。
谓语被嵌在方括号中。
4-3.选取未知节点
4-4.选取若干路径
5.XPATH轴
实例:
1.parent::div 上层父节点,你那叫div的亲生爸爸,最多有一个;
2.child::div 下层所有子节点,你的所有亲儿子中叫div的;
3.ancestor::div上面所有直系节点,是你亲生爸爸或者你亲爹或者你亲爹的爸爸中叫div的;
4.descendant::div下面所有节点,你的后代中叫div的,不包括你弟弟的后代;
5.folloving::div 自你以下页面中所有节点叫div的;
6.following-sibling::div 同层下节点,你所有的亲弟弟中叫div的;
7.preceding::div同层上节点,你所有的亲哥哥以及他们的后代中叫div的;
8.preceding-sibling::div同层上节点,你所有的亲哥哥中叫div的;
实际所有元素中的第一个:
5-1.位置路径表达式
5-2.步包括轴和节点测试
6.XPATH运算符
XPATH 表达式可返回节点集、字符串、逻辑值以及数字。
https://www.cnblogs.com/zhaozhan/archive/2009/09/10/1564332.html
http://www.zvon.org/xxl/XPathTutorial/General_chi/examples.html
选取当前节点之后的所有同级节点:Following-sibling::子节点标签名
选取当前节点的父节点:parent::子节点标签名
选取当前节点之前的所有同级节点:Preceding-sibling::子节点标签名
7.用Text文本构建有效的XPATH
语法如下://标签名[text()=’标签名对应的文本名称’]
比如://a[text()=’文本名称’],文本名称要完全匹配,包括空格。
8.用Contains关键字模糊查询
语法如下://标签名[contains(@属性/text(),'值')]
比如://a[contains(text(),’忘记密码’)],其中忘记密码可以部分包含,不用完全匹配。
//input[contains(@class,’ipt’) and contains(@placeholder,’手机号’)],其中可以使用逻辑的方式去定位元素。
9.用starts-with关键字查询部分属性的值
语法如下://标签名[startwith(@属性/text(),'属性的开始值开头’)]
比如://input[starts-with(@class,’xa-emaiOrphone’)]
10、svg相关的特定写法。
svg的特殊写法,用name属性://*[name='svg']
参考文档:https://www.runoob.com/xpath/xpath-axes.html