最近在作UI自動化, UI自動化的元素定位繞不開XPath, 抽空學習了XPath相關知識, 這裏作下學習筆記.node
XPath, 全稱 XML Path Language, 即XML路徑語言, 是一門在XML文檔中查找信息的語言.函數
XPath是使用路徑表達式來選去XML文檔中的節點或者節點集. 節點是經過沿着路徑(path)或者步(steps)來選取的.學習
表達式 | 描述 |
---|---|
nodename | 選取此節點的全部子節點 |
/ | 從當前節點選取直接子節點 |
// | 從匹配選擇的當前節點選擇全部子孫節點 |
. | 選取當前節點 |
.. | 選取當前節點的父節點 |
@ | 選取屬性 |
謂語用來查找某個特定的節點或者包含某個指定的值的節點.
謂語被嵌在方括號中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包含有超過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。 |
and、or、mod、+、-、*、div、=、!=、<、<=、>、>=自動化
錨點 | 描述 |
---|---|
ancestor::節點選擇器 | 選取當前節點的全部先輩(父、祖父等)。 |
ancestor-or-self | 選取當前節點的全部先輩(父、祖父等)以及當前節點自己。 |
attribute::節點選擇器 | 選取當前節點的全部屬性值 |
child | 選取當前節點的全部直接子元素 |
descendant | 獲取當前節點的全部後代元素(子、孫等) |
following | 獲取當前節點的結束標籤以後的全部節點 |
following-sibling | 能夠獲取當前節點以後的全部同級節點 |
namespace | 選取當前節點的全部命名空間節點。 |
preceding | 選取文檔中當前節點的開始標籤以前的全部節點。 |
self | 選取當前節點 |