XPath學習筆記

背景

最近在作UI自動化, UI自動化的元素定位繞不開XPath, 抽空學習了XPath相關知識, 這裏作下學習筆記.node

XPath簡介

XPath, 全稱 XML Path Language, 即XML路徑語言, 是一門在XML文檔中查找信息的語言.函數

XPath是使用路徑表達式來選去XML文檔中的節點或者節點集. 節點是經過沿着路徑(path)或者步(steps)來選取的.學習

XPath語法

路徑表達式:

表達式 描述
nodename 選取此節點的全部子節點
/ 從當前節點選取直接子節點
// 從匹配選擇的當前節點選擇全部子孫節點
. 選取當前節點
.. 選取當前節點的父節點
@ 選取屬性

謂語(Predicates)

謂語用來查找某個特定的節點或者包含某個指定的值的節點.
謂語被嵌在方括號中spa

謂語 描述
n 第n個元素
last() 最後一個元素
last()-n 倒數第n+1個元素
position()<n 選取前n-1個元素
@XXX 能夠嵌套表達式

選取未知節點

XPath通配符能夠用於選取未知的XML元素.文檔

通配符 描述
* 匹配任何元素節點
@* 匹配任何屬性節點
node() 匹配任何類型的節點

選取若干路徑

經過在路徑表達式中使用「|」, 能夠選取若干個路徑.字符串

eg:string

路徑表達式 結果
//* 匹配文檔中的全部元素
//title[@*] 匹配全部帶有屬性的title元素
//title //price
/bookstore/book[price>35.00] 選取 bookstore 元素的全部 book 元素,且其中的 price 元素的值須大於 35.00。

XPath標準函數

XPath包含有超過100個內建函數. 這些函數用於字符串值、數值、日期和時間比較、節點和QName處理、序列處理、邏輯值等.it

函數 描述
contains(@AA, "XXX") 屬性AA是否包含XXX的元素
starts-with(string1,string2) 若是 string1 以 string2 開始,則返回 true,不然返回 false。
ends-with(string1,string2) 若是 string1 以 string2 結尾,則返回 true,不然返回 false。
matches(string,pattern) 若是 string 參數匹配指定的模式,則返回 true,不然返回 false。

其餘關鍵信息

1.支持的運算符

and、or、mod、+、-、*、div、=、!=、<、<=、>、>=自動化

2.XPath Axes(軸)

  • 軸可定義相對於當前節點的節點集.
  • 語法: 軸::節點選擇器
錨點 描述
ancestor::節點選擇器 選取當前節點的全部先輩(父、祖父等)。
ancestor-or-self 選取當前節點的全部先輩(父、祖父等)以及當前節點自己。
attribute::節點選擇器 選取當前節點的全部屬性值
child 選取當前節點的全部直接子元素
descendant 獲取當前節點的全部後代元素(子、孫等)
following 獲取當前節點的結束標籤以後的全部節點
following-sibling 能夠獲取當前節點以後的全部同級節點
namespace 選取當前節點的全部命名空間節點。
preceding 選取文檔中當前節點的開始標籤以前的全部節點。
self 選取當前節點
相關文章
相關標籤/搜索