測試工具-XPath使用

老僧觀天下發表於2020-09-26

XML有兩種MIME型別,即application/xml和text/xml,在HTTP中,MIME Type型別被定義在Content-Type header中。我們經常也會看到介面返回資料型別為XML格式。功能測試/自動化指令碼里,經常會需要提取xml資料,用作上下文使用或者用作斷言校驗。使用XPath可以很好的完成對XML的查詢、提取和使用,同樣也支援HTML元素的解析。

JMeter的XPath提取器

image

XPath頁面的引數介紹

Apply to:作用範圍(返回內容的斷言範圍)
         Main sample and sub-samples:作用於父節點的取樣器及對應子節點的取樣器
         Main sample only:僅作用於父節點的取樣器
         Sub-samples only:僅作用於子節點的取樣器
         JMeter Variable:作用於jmeter變數(輸入框內可輸入jmeter的變數名稱)
XML Parsing Options:要解析的XML引數
         UseTidy:當需要處理的頁面是HTML格式時,必須選中該選項;如果是XML或XHTML格式(例如RSS返回),則取消選中;
         Quiet:表示只顯示需要的HTML頁面,
        報錯異常:Report errors表示顯示響應報錯,
        顯示警告:Show warnings表示顯示警告;
         Use Namespaces:如果啟用該選項,後續的XML解析器將使用名稱空間來分辨;
         Validate XML:根據頁面元素模式進行檢查解析;
         Ignore Whitespace:忽略空白內容;
         Fetch external DTDs:如果選中該項,外部將使用DTD規則來獲取頁面內容;
Return entire XPath fragment of  text content:返回文字內容的整個XPath片段;
引用名稱Reference Name:存放提取出的值的引數。
XPath Query:用於提取值的XPath表示式。
匹配數字:取第幾個匹配結果,0隨機,-1全部,1代表第一個,2代表第二個,....以此類推
預設值 Default Value:引數的預設值。

如何編寫XPath

  1. 基本語法

image

  1. 使用示例
  • 根據元素屬性定位
<span class="x-bw" style=""></span>
選取屬性class的屬性值為x-bw的所有節點
//span[@class='x-bw']
  • 層級屬性結合定位
查詢某元素內部的所有元素,選取div 元素內部的所有span
//div[@id="divId"]//span

第二個雙斜槓,表示選取內部所有的 span,不管層級關係
  • 使用謂語定位
查詢倒數第幾個子元素,選取form下的倒數第一個span
//form[@id="form"]/span[last()-1]
  • 使用邏輯運算子
查詢name屬性為wd或者class屬性為 s_ipt 的任意元素,取其中之一滿足即可
//*[@name='wd' or @class='s_ipt']

  • 使用文字定位
contains 選取屬性或者文字包含某些字元
starts-with 選取屬性或者文字以某些字元開頭
ends-with 選取屬性或者文字以某些字元開頭

//div[contains(@id, 'divId')] 選取id 屬性包含divId的div元素

Java的XPath工具包

Java自帶一個XPath工具包javax.xml.xpath

Python的XPath工具包

pip install scrapy 

掃一掃,關注我

相關文章