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

posted @ 2019-10-08 09:11  wendyw  阅读(25391)  评论(1编辑  收藏  举报