【jmeter】關聯-正則表達和xpath


話說LoadRunner有的一些功能,比如:參數化、檢查點、集合點、關聯,Jmeter也都有這些功能,只是功能可能稍弱一些,今天就關聯來講解一下。

JMeter的關聯方法有兩種:后置處理器-正則表達式提取器與XPath Extractor。

 

一、正則表達式提取器

1、添加正則表達式

在需要獲得數據的上一個請求上右擊添加一個后置處理器-->正則表達式提取器

解釋

(1)引用名稱:下一個請求要引用的參數名稱,如填寫activityID,則可用${activityID}引用它。

(2)正則表達式

    ()括起來的部分就是要提取的。

    .匹配任何字符串。
    +:一次或多次。
    ?:不要太貪婪,在找到第一個匹配項后停止。
注:(.+?)[.\n]+可以匹配換行符在內的所有字符。

(3)模板:用$$引用起來,如果在正則表達式中有多個正則表達式(多個括號括起來的東東),則可以是$2$$3$等等,表示解析到的第幾個值給title。如:$1$表示解析到的第1個值

(4)匹配數字:0代表隨機取值,1代表全部取值,通常情況下填0,如果在LR中,取出的值是一個數組,還得處理一下,LR11版本用一個隨機的函數就可以不用寫大段的代碼來處理數組。

(5)缺省值:如果參數沒有取得到值,那默認給一個值讓它取。

 

2、關於正則表達式的舉例說明

(1)提取單個字符串:
假設測試人員期望匹配Web頁面的如下部分:name = "file" value = "readme.txt">並提取readme.txt。
一個符合要求的正則表達式:name = "file" value = "(.+?)">。
():封裝了待返回的匹配字符串。
.:匹配任何字符串。
+:一次或多次。
?:不要太貪婪,在找到第一個匹配項后停止。
 
(2)提取多個字符串:
假設測試人員期望匹配Web頁面的如下部分:name = "file" value = "readme.txt">並提取file和readme.txt。
一個符合要求的正則表達式:name = "(.+?)" value = "(.+?)"。
引用名稱:MYREF
模板:$1$$2$
 
如下變量的值將會被設定:
MYREF_g0:name = "file"value = "readme.txt"
MYREF_g1:file
MYREF_g2:readme.txt
引用${MYREF_g1}

 

3、使用該關聯的請求

如下圖:

 

4、完整的例子事例代碼

 

二、XPath Extractor

XPath Extractor是另一個可被用來提取頁面給定內容的Post Processor,XPath Extractor的使用方式與Regular Expression Extractor類似,只不過需要在該Extractor中指定的不是正則表達式,而是給定的XPath路徑。

用xpath從前一個請求中取。這種形式比較適合於返回為xml片段的情況。在需要獲得數據的請求上右擊添加一個后置處理器-->xPath Extractor。引用名稱即下一個請求要引用的參數名稱,如填寫body,則可用${body}引用它。

Xpath一般用於返回xml用得多。

XPath Extractor的設置界面:

l  Use Tidy?:當需要處理的頁面是HTML格式時,必須選中該選項,當需要處理的頁面是XML或XHTML格式(例如,RSS返回)時,取消選中該選項。

l  Reference Name:存放提取出的值的參數。

l  XPath Query:用於提取值的XPath表達式。

l  Default Value:參數的默認值。

 

三、小結這兩種方式

正則表達式提取器和XPath Extractor都可以用來提取給定頁面中的特定文本,並將其保存在參數中,這兩種方式各有優缺點。

正則表達式提取器可以用於對頁面任何文本的提取,提取的內容是根據正則表達式在頁面內容中進行文本匹配;

而XPath Extractor則可以提取返回頁面任意元素的任意屬性。

相比較而言,

如果需要提取的文本是頁面上某元素的屬性值,建議使用XPath Extractor;

而如果需要提取的文本在頁面上的位置不固定,或者不是元素的屬性,建議使用正則表達式提取器。

 


免責聲明!

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



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