UI自动化定位利器-xpath实战

简介

XPath即为XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言。

XPath基于XML的树状结构,提供在数据结构树中找寻节点的能力。起初XPath的提出的初衷是将其作为一个通用的、介于XPointer与XSL间的语法模型。但是XPath很快地被开发者采用来当作小型查询语言。

语法

选取节点 XPath 使用路径表达式在 XML 文档中选取节点。节点是通过沿着路径或者 step 来选取的。

下面列出了最有用的路径表达式:

在这里插入图片描述
在下面的表格中,我们已列出了一些路径表达式以及表达式的结果:
在这里插入图片描述
谓语(Predicates)

谓语用来查找某个特定的节点或者包含某个指定的值的节点。谓语被嵌在方括号中。

实例:
在下面的表格中,我们列出了带有谓语的一些路径表达式,以及表达式的结果:

在这里插入图片描述
选取未知节点

XPath 通配符可用来选取未知的 XML 元素。
在这里插入图片描述
实例:
在下面的表格中,我们列出了一些路径表达式,以及这些表达式的结果:
在这里插入图片描述
选取若干路径

通过在路径表达式中使用“|”运算符,您可以选取若干个路径。

实例:

在下面的表格中,我们列出了一些路径表达式,以及这些表达式的结果:
在这里插入图片描述
在这里插入图片描述
表达式

XPath 使用路径表达式来选取 XML 文档中的节点或者节点集。这些路径表达式和我们在常规的电脑文件系统中看到的表达式非常相似。路径表达式是从一个XML节点(当前的上下文节点)到另一个节点、或一组节点的书面步骤顺序。

这些步骤以“/”字符分开,每一步有三个构成成分:

一般情况下,我们使用简写后的语法。虽然完整的轴描述是一种更加贴近人类语言,利用自然语言的单词和语法来书写的描述方式,但是相比之下也更加啰嗦。

运算符

下面列出了可用在 XPath 表达式中的运算符:

在这里插入图片描述
在这里插入图片描述
标准函数

XPath 含有超过 100 个内建的函数。这些函数用于字符串值、数值,日期和时间比
较、节点和 QName 处理、序列处理、逻辑值等等。

使用:

XPath 是 XSLT 标准中的主要元素。如果没有 XPath 方面的知识,您就无法创建 XSLT 文档。

XQuery 和 XPointer 均构建于 XPath 表达式之上。XQuery 1.0 和 XPath 2.0 共享相同的数据模型,并支持相同的函数和运算符。

标准:

XPath 于 1999年11月16日 成为 W3C 标准。

XPath 被设计供 XSLT、XPointer 以及其他 XML 解析软件使用。

轴定义

轴可定义相对于当前节点的节点集。(以当前节点为轴心)

在这里插入图片描述
位置路径表达式
位置路径可以是绝对的,也可以是相对的。

绝对路径起始于正斜杠( / ),而相对路径不会这样。在两种情况中,位置路径均包括一个或多个步,每个步均被斜杠分割:

  • 绝对位置路径:/step/step/…
  • 相对位置路径:step/step/…
  • 每个步均根据当前节点集之中的节点来进行计算

每个步均根据当前节点集之中的节点来进行计算

步(step)包括:

  • 轴(axis)

  • 定义所选节点与当前节点之间的树关系

  • 节点测试(node-test)

  • 识别某个轴内部的节点

  • 零个或者更多谓语(predicate)

  • 更深入地提炼所选的节点集

步的语法:轴名称::节点测试[谓语]

实例:

在这里插入图片描述

节点关系
节点(Node)是XPath 的术语。

在 XPath 中,有七种类型的节点:元素、属性、文本、命名空间、处理指令、注释以及文档(根)节点。XML 文档是被作为节点树来对待的。树的根被称为文档节点或者根节点。

  • 父(Parent)

每个元素以及属性都有一个父。

在下面的例子中,book 元素是 title、author、year 以及 price 元素的父:
在这里插入图片描述

  • 子(Children)

元素节点可有零个、一个或多个子。

在下面的例子中,title、author、year 以及 price 元素都是 book 元素的子:

在这里插入图片描述

  • 同胞(Sibling)(兄弟)

拥有相同的父的节点

在下面的例子中,title、author、year 以及 price 元素都是同胞:
在这里插入图片描述

  • 先辈(Ancestor)

某节点的父、父的父,等等。

在下面的例子中,title 元素的先辈是 book 元素和 bookstore 元素:

在这里插入图片描述

  • 后代(Descendant)

某个节点的子,子的子

在下面的例子中,bookstore 的后代是 book、title、author、year 以及 price 元素:

出资能去在这里插入图片描述

存取函数

  • fn:node-name(node) 返回参数节点的节点名称。

  • fn:nilled(node) 返回是否拒绝参数节点的布尔值。

  • fn:data(item.item,…) 接受项目序列,并返回原子值序列。

  • fn:base-uri()

  • fn:base-uri(node)

  • 返回当前节点或指定节点的 base-uri 属性的值。

  • fn:document-uri(node)

  • 返回指定节点的 document-uri 属性的值。

语言升级

在 W3C 建议下,XPath 1.0于 1999年 11月16日 发表。XPath 2.0 正在W3C审核过程的最终阶段。XPath 2.0表达了XPath语言在大小与能力上显著的增加。

最值得一提的改变是XPath 2.0有了更丰富的型别系统;XPath 2.0支持不可分割型态,如在 XML Schema 内建型态定义一样,并且也可自纲要(schema)导入用户自定型别。每个值都是一个序列(一个单一不可分割值或节点都被视为长度一的序列)。XPath 1.0节点组被节点序列取代,它可以是任何顺序。

为了支持更丰富的型别组,XPath 2.0提供相当延展的函式与操作子群。

XPath 2.0实际上是 XQuery 1.0 的子集合。它提供了一个for表达式。该式是XQuery里“FLWOR”表达式的缩减版。利用列出XQuery省去的部分来描述该语言是可能的。主要范例是查询前导语(query prolog)、元素和属性建构式、“FLWOR”语法的余项式、以及typeswitch表达式。

实例
在这里插入图片描述
最后,学习方法送上:

在这里插入图片描述
这些资料,以及上方的自动化测试进阶线路详细讲解,对于想进阶测试的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助…….

祝大家都能拿到心动的offer~~

猜你喜欢

转载自blog.csdn.net/m0_53918927/article/details/125408529