web自動化如何使用xpath定位元素


XPath 路徑表達式

XPath 使用路徑表達式來選取 Html 中的節點或者節點集。

表達式
描述
nodename 選取此節點的所有子節點。
/ 從根節點選取。
// 從匹配選擇的當前節點選擇文檔中的節點,而不考慮它們的位置。
. 選取當前節點。
.. 選取當前節點的父節點。
@ 選取屬性。

HTML 實例

我們將在下面的例子中使用這個 HTML

<html>
  <bookstore>
    <book id="book1">
      <title lang="eng">學習xpath</title>
      <price id="test1">29.99</price>
    </book>
    <book id="book2">
      <title lang="eng">學習xpath</title>
      <price id="test2">39.95</price>
    </book>
  </bookstore>
</html>

實例

在下面的表格中,我們已列出了一些路徑表達式以及表達式的結果:

路徑表達式
結果
//bookstore 選取 bookstore 元素的所有子節點。
//bookstore/book 選取屬於 bookstore 的子元素的所有 book 元素。
//book 選取所有 book 子元素,而不管它們在文檔中的位置。
//bookstore//book 選擇屬於 bookstore 元素的后代的所有 book 元素,而不管它們位於 bookstore 之下的什么位置。
//book[@lang] 選取包含 lang 的有屬性所有book元素,而不管它們在文檔中的位置。

常用的XPath 軸

軸可定義相對於當前節點的節點集。

軸名稱
結果
ancestor 選取當前節點的所有先輩(父、祖父等)。
parent 選取當前節點的父節點。
following-sibling 選取當前節點之后的所有同級節點。
preceding-sibling 選取當前節點之前的所有同級節點。

 

假如我們需要定位:

第一個book節點的title,因為此處的2個title標簽的所有屬性都一樣,所以我們需要借助它鄰近的元素定位到它。

//price[@id='test1']/preceding-sibling::title

xpath解讀:首先找到id是test1的price節點,然后找到它之前的同級title節點。

//book[@id='book1']/title

xpath解讀:首先找到id是book1的book節點,然后找到它直接子節點title。

 

其它軸實例:

//price/parent::book

xpath解讀:定位price的直接父級節點book

//title/following-sibling:(吐舌頭)rice

xpath解讀:定位title后面同級節點price

//title//ancestor::book

xpath解讀:定位title的所有父級、祖父級的book節點

 

xpath的/和//區別:

/是僅僅查找它直接父節點或者子節點

//是查找它所有的父級和祖父級...節點

 

詳情請查閱:

http://www.w3school.com.cn/xpath/index.asp


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM