XML有兩種MIME型別,即application/xml和text/xml,在HTTP中,MIME Type型別被定義在Content-Type header中。我們經常也會看到介面返回資料型別為XML格式。功能測試/自動化指令碼里,經常會需要提取xml資料,用作上下文使用或者用作斷言校驗。使用XPath可以很好的完成對XML的查詢、提取和使用,同樣也支援HTML元素的解析。
JMeter的XPath提取器
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
- 基本語法
- 使用示例
- 根據元素屬性定位
<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
掃一掃,關注我