天天看點

jmeter提取器(css、xpath、正規表達式)

前景

接口或是壓力測試jmeter是一個不錯的選擇,免費開源。一般來說接口傳回或請求體類型相對來說json會多一些,其次html。針對不同的類型體,使用不同的提取方式會達事倍功半的效果。

常見類型 常用提取器 備注

json JSON Extractor,Regular Expression Extractor,Boundary Extractor 如果格式比較規範的話,首先JSON Extractor

xml Regular Expression Extractor,Boundary Extractor Regular Expression Extractor相對來說更好用些

html Regular Expression Extractor,XPath Extractor,CSS Selector Extractor,Boundary Extractor 含有清單,取清單中的值時用xpath extractor還是很友善的

網上已經有很多介紹json extractor,regular expression extractor。在此不介紹了,隻對xpath extractor做個簡單的介紹。

官方介紹:

xpath 提取器

這個測試元素允許使用者使用XPath查詢語言從結構化響應(XML或(X)HTML)中提取值

如果JMeter 5.0+版本,請使用XPath2 Extractor,它提供了更好、更簡單的名稱空間管理、更好的性能和對XPath 2.0的支援。

XPath提取器的控制台截圖

參數說明

屬性 描述 是否必選/填項

name 線程組樹結構中顯示的此元素控件的描述性名稱 不是

apply to 這适用于可以生成子樣本的采樣器,例如帶有嵌入式資源的HTTP采樣器、郵件閱讀器或事務控制器生成的樣本。Main sample only - 隻适用于主樣本Sub-samples only- 隻适用于子樣本Main sample and sub-samples - 适用于所有樣本JMeter Variable Name to use - 提取将應用于已命名變量XPath比對應用于所有符合條件的示例,并傳回所有比對結果。 是

Use Tidy(tolerant parser) 如果選中,使用Tidy将HTML響應解析為XHTML“Use Tidy” 如果是處理HTML,應該選中此項,這樣的響應使用Tidy轉換為有效的XHTML (XML相容的HTML)。“Use Tidy”如果是處理XHTML或XML,不需要選中(如RSS)。對于HTML, 建議使用CSS提取器,不要使用XPath提取器。 是

quiet 隻顯示需要的html頁面

report errors 如果發生Tidy錯誤,則相應地設定斷言

show warnings 顯示警告

use namespaces 如果勾選此項,XML解析器将使用名稱空間解析。注意,目前隻有在根元素上聲明的名稱空間才能被識别。有關額外工作空間名稱的使用者定義,請參見下文。

validate xml 根據其模式檢查文檔。

ignore whitespace 忽略空白元素

fetch external DTDS 如果選中,則擷取外部dtd

return entire xpath fragment instead of text content 如果選中,将傳回片段,而不是傳回文本内容。例如://title 将傳回“

Apache JMeter”不是“Apache JMeter”。如果是//title/text()将傳回“Apache JMeter”。 是

name of creadted variable jmeter變量名稱存放提取參數值的 是

xpath query XPath語言中的元素查詢。可以傳回多個比對項。 是

match NO.(0 for random) 如果XPath路徑查詢導緻許多結果,您可以選擇将其中一個(多個)提取為變量:0:傳回随機值-1:表示提取所有結果(包含預設值),它們将被命名為<變量>_N(其中N從1到結果數量)X:表示提取第x個結果。如果第X個結果大于比對的數量,則不傳回任何值。将使用預設值 不是

default value 預設值當沒有找到比對時傳回的預設值。如果節點沒有值且未選擇fragment選項,也會傳回該值。

為了在ForEach控制器中使用,在return中設定以下變量:

refName -設定為第一個(或唯一的)比對;如果沒有比對,則設定為預設

refName_matchNr -設定比對數量(可能為0)

refName_n - n=1, 2, 3,等等設定為第1、2、3場等等。

注意:下一個refName_n變量被設定為null——例如,如果有兩個比對項,那麼refName_3被設定為null,如果沒有比對項,那麼refName_1被設定為null。

XPath是主要用于XSLT轉換的查詢語言。然而,它作為結構化資料的通用查詢語言也很有用。有關詳細資訊,請參閱XPath參考或XPath規範。以下是一些例子:

/html /head/title

從HTML響應中提取标題元素

/book/page[2]

從一本書的第二頁摘錄

/book/page

從一本書中摘取全部頁數

/ /form[@ name=‘countryForm’] / /select[@ name= ‘country’]/select[text()= ‘Czech Republic’]/@value

用name屬性“country”從表單中提取比對文本“Czech Republic”的選項元素值屬性

當選中“Use Tidy”時,生成的XML文檔可能與原來的HTML響應略有不同:

所有元素和屬性名都轉換為小寫字母.

Tidy嘗試糾正嵌套不正确的元素。例如-原來的(不正确的)ul/font/li變成正确的ul/li/font

NAMESPACES

作為Xalan XPath解析器(JMeter基于的實作)名稱空間限制的解決方案,您需要:

提供一個屬性檔案(如果你的檔案命名為namespaces.properties),其中包含名稱空間字首的映射:

prefix1=http://foo.apache.org

prefix2=http://toto.apache.org

在使用者中引用此檔案。使用屬性的屬性檔案:

xpath.namespace.config=namespaces.properties

//mynamespace:tagname

//*[local-name()=‘tagname’ and namespace-uri()=‘uri-for-namespace’]

uri-for-namespacemynamespace

執行個體提取的是下面頁面的上海對應的href值:

http://www.weather.com.cn/weather/101010100.shtml

jmeter提取器(css、xpath、正規表達式)

jmeter接口請求:

jmeter提取器(css、xpath、正規表達式)

xpath提取器(執行個體表達式://div[@class=‘w_city city_guonei’]//a[@title=“上海”]/@href)

jmeter提取器(css、xpath、正規表達式)

css提取器(執行個體表達式:body>div>div>div>div>div>dl>dd>a[title=‘上海’])

jmeter提取器(css、xpath、正規表達式)

正規表達式提取器(執行個體表達式:a\shref="(.*?)" target="_blank" rel="external nofollow" \stitle=“上海”,“\s”表示空格):

jmeter提取器(css、xpath、正規表達式)

執行結果:

jmeter提取器(css、xpath、正規表達式)

注:在使用xpath提取器時,如果是處理的html頁面,一定要選中“Use Tity”選項,否則會出現如下錯誤:

jmeter提取器(css、xpath、正規表達式)

上文如果表格或是圖檔不顯示,請打開此連結文檔:jmeter提取器(css、xpath、正規表達式?..

連結:http://note.youdao.com/noteshare?id=9f82eb5f366c61c8cc40cb30f2d053ba&sub=2321A08AEB6D44B29730409BB4AFE094檢視源文:

繼續閱讀