Xpath語法&示例


一、選取節點
常用的路徑表達式:

表達式 描述 實例  
nodename 選取nodename節點的所有子節點 xpath(‘//div’) 選取了div節點的所有子節點
/ 從根節點選取 xpath(‘/div’) 從根節點上選取div節點
// 選取所有的當前節點,不考慮他們的位置 xpath(‘//div’) 選取所有的div節點
. 選取當前節點 xpath(‘./div’) 選取當前節點下的div節點
.. 選取當前節點的父節點 xpath(‘..’) 回到上一個節點
@ 選取屬性 xpath(’//@calss’) 選取所有的class屬性

二、謂語

謂語被嵌在方括號內,用來查找某個特定的節點或包含某個制定的值的節點

實例: 

表達式 結果
xpath(‘/body/div[1]’) 選取body下的第一個div節點
xpath(‘/body/div[last()]’) 選取body下最后一個div節點
xpath(‘/body/div[last()-1]’) 選取body下倒數第二個div節點
xpath(‘/body/div[positon()<3]’) 選取body下前兩個div節點
xpath(‘/body/div[@class]’) 選取body下帶有class屬性的div節點
xpath(‘/body/div[@class=”main”]’) 選取body下class屬性為main的div節點
xpath(‘/body/div[price>35.00]’) 選取body下price元素值大於35的div節點

 三、通配符

Xpath通過通配符來選取未知的XML元素

表達式 結果
xpath(’/div/*’) 選取div下的所有子節點
xpath(‘/div[@*]’) 選取所有帶屬性的div節點

 四、取多個路徑

使用“|”運算符可以選取多個路徑

表達式 結果
xpath(‘//div|//table’) 選取所有的div和table節點

五、Xpath軸

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

軸名稱 表達式 描述
ancestor xpath(‘./ancestor::*’) 選取當前節點的所有先輩節點(父、祖父)
ancestor-or-self xpath(‘./ancestor-or-self::*’) 選取當前節點的所有先輩節點以及節點本身
attribute xpath(‘./attribute::*’) 選取當前節點的所有屬性
child xpath(‘./child::*’) 返回當前節點的所有子節點
descendant xpath(‘./descendant::*’) 返回當前節點的所有后代節點(子節點、孫節點)
following xpath(‘./following::*’) 選取文檔中當前節點結束標簽后的所有節點
following-sibing xpath(‘./following-sibing::*’) 選取當前節點之后的兄弟節點
parent xpath(‘./parent::*’) 選取當前節點的父節點
preceding xpath(‘./preceding::*’) 選取文檔中當前節點開始標簽前的所有節點

 

preceding-sibling xpath(‘./preceding-sibling::*’) 選取當前節點之前的兄弟節點
self xpath(‘./self::*’) 選取當前節點

 

六、功能函數   

使用功能函數能夠更好的進行模糊搜索

函數 用法 解釋
starts-with xpath(‘//div[starts-with(@id,”ma”)]‘) 選取id值以ma開頭的div節點
contains xpath(‘//div[contains(@id,”ma”)]‘) 選取id值包含ma的div節點
and xpath(‘//div[contains(@id,”ma”) and contains(@id,”in”)]‘) 選取id值包含ma和in的div節點
text() xpath(‘//div[contains(text(),”ma”)]‘) 選取節點文本包含ma的div節點

轉自https://www.cnblogs.com/MUMO/p/5732836.html

------------------------------------------------------------------------------------------------------------------
 
補充:
//input[not(@id='123')]               找id不為123的input
//span[substring(@name,3,5)='xxxxx']        name屬性第3個字符開始的5個字符是xxxxx的
//span[sbustring-before(@class,"-")="spanclass1"]  class屬性中-字符前面的字符是spanclass1
//span[sbustring-after(@class,"-")="spanclass1"]   class屬性中-字符后面的字符是spanclass1
//div[div[@id='xxx']]                依靠子節點定位
 
 

---------------------------------------------------------------------------------

關注微信公眾號即可在手機上查閱,並可接收更多測試分享~


免責聲明!

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



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