35、XPath的使用示例


使用Xpath獲取頁面元素

【參見W3C官網說明】
 
以下Xpath路徑都是獲取下面地址的元素
 
可以在console 使用 $x() 執行xpath進行驗證

下面列出了最有用的路徑表達式:

表達式 描述
nodename 選取此節點的所有子節點。
/ 從根節點選取。
// 從匹配選擇的當前節點選擇文檔中的節點,而不考慮它們的位置。
. 選取當前節點。
.. 選取當前節點的父節點。
@ 選取屬性。
* 匹配任何元素節點。
@* 匹配任何屬性節點。
node() 匹配任何類型的節點。
| 通過在路徑表達式中使用“|”運算符,您可以選取若干個路徑。
 
結合關鍵字、索引的運用實例
路徑表達式 結果
bookstore 選取 bookstore 元素的所有子節點。
/bookstore

選取根元素 bookstore。

bookstore/book 選取屬於 bookstore 的子元素的所有 book 元素。
//book 選取所有 book 子元素,而不管它們在文檔中的位置。
bookstore//book 選擇屬於 bookstore 元素的后代的所有 book 元素,而不管它們位於 bookstore 之下的什么位置。
//@lang 選取名為 lang 的所有屬性。
//div/form/input[2]  匹配 上級節點 div 下節點是 form 中的第二個 input 元素
//div//div[@id='ls']/span[position()=3] position() 索引函數
//div//div[@id='ls']/span[position()<3] position() 索引函數
//div//div[@id='ls']/span[last()] last() 索引  表示同級的最后一個元素
//div//div[@id='ls']/span[last()-1] last() 索引  表示同級的倒數第二個元素
//div//input[@type='radio' and @value='sx'] and 匹配的input元素要兩個條件同時滿足
//div//input[@name='password' or @name="username"] or  或者的關系,匹配的input元素兩個條件滿足一個即可
//div//input[not(@id='username')] not 除了當前條件 匹配div中id不等於username的所有input元素
//a[contains(@class,'btn-primary')] contains 匹配 a標簽的class屬性中包含btn-primary元素
//div//input[starts-with(@id,'user')] starts-with 匹配當前id屬性是以'user'開頭的所有input元素
//div[substring(@id,1,11)='_mail_input'] substring 匹配div中id的第1-11個字符內容為 _mail_input 的元素
//div[substring-before(@id,'-')='_mail_input_'] substring-before 匹配div中id內容在 '-' 之前等於_mail_input_ 的元素
//div[substring-after(@id,'-')='_224' substring-after 匹配div中id內容在 '-' 之后等於 _224 的元素
bookstore/* 選取 bookstore 元素的所有子元素。
//* 選取文檔中的所有元素
//title[@*] 選取所有帶有屬性的 title 元素。
//input[@*='radio'] 選取所有屬性值中有radio的input元素
//book/title | //book/price 選取 book 元素的所有 title 和 price 元素。
//title | //price 選取文檔中的所有 title 和 price 元素。
/bookstore/book/title | //price 選取屬於 bookstore 元素的 book 元素的所有 title 元素,以及文檔中所有的 price 元素。

 

XPath 軸

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

軸名稱 結果
ancestor 選取當前節點的所有先輩(父、祖父等)。
ancestor-or-self 選取當前節點的所有先輩(父、祖父等)以及當前節點本身。
child 選取當前節點的所有子元素。
descendant 選取當前節點的所有后代元素(子、孫等)。
descendant-or-self 選取當前節點的所有后代元素(子、孫等)以及當前節點本身。
following 選取文檔中當前節點的結束標簽之后的所有節點。
parent 選取當前節點的父節點。
preceding 選取文檔中當前節點的開始標簽之前的所有節點。
preceding-sibling 選取當前節點之前的所有同級節點。
self 選取當前節點。

語法:

軸名稱::節點測試[謂語]

實例

 
例子 結果
//div[@id='ls']/child::span 選取所有id=ls的div節點的子元素 span 節點(div的子節點)
//span/parent::div 選取span的父節點是div的所有節點
//span/ancestor::tr 選擇span節點的所有 tr 先輩
//div[@id='ls']/descendant::a 選取div節點的所有 a 后代
//div[@id='ls']/descendant-or-self::a 選取div節點的所有 a 后代以及自己本身
//div[@id='ls']/ancestor-or-self::td 選取div節點的所有 td 先輩以及自己本身
//span[@id='sf']/preceding-sibling::span 選取當前節點之前的所有同級 span 節點
//span[@id='sf']/following-sibling::span 選取當前節點之后的所有同級 span 節點
//span[@id='sf']/preceding::a 選取當前span節點之前的所有 a 節點
//span[@id='sf']/following::a 選取當前span節點之后的所有 a 節點
//span[@id='sf']/self::span 選取當前節點span自己 
 

 


免責聲明!

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



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