LoadRunner有的一些功能州疾,比如:參數(shù)化辜限、檢查點、集合點严蓖、關聯(lián)薄嫡,Jmeter也都有這些功能,只是功能可能稍弱一些颗胡,今天就關聯(lián)來講解一下毫深。
JMeter的關聯(lián)方法有兩種:后置處理器-正則表達式提取器與XPath Extractor。
一毒姨、正則表達式提取器
1哑蔫、添加正則表達式
在需要獲得數(shù)據(jù)的上一個請求上右擊添加一個后置處理器-->正則表達式提取器
解釋:
(1)引用名稱:下一個請求要引用的參數(shù)名稱,如填寫activityID,則可用${activityID}引用它闸迷。
(2)正則表達式:
()括起來的部分就是要提取的嵌纲。
.匹配任何字符串。
+:一次或多次稿黍。
?:不要太貪婪疹瘦,在找到第一個匹配項后停止。
注:(.+?)[.\n]+可以匹配換行符在內的所有字符巡球。
(3)模板:用$$引用起來言沐,如果在正則表達式中有多個正則表達式(多個括號括起來的東東),則可以是$2$$3$等等酣栈,表示解析到的第幾個值給title险胰。如:$1$表示解析到的第1個值
(4)匹配數(shù)字:0代表隨機取值,1代表全部取值矿筝,通常情況下填0起便,如果在LR中,取出的值是一個數(shù)組窖维,還得處理一下榆综,LR11版本用一個隨機的函數(shù)就可以不用寫大段的代碼來處理數(shù)組。
(5)缺省值:如果參數(shù)沒有取得到值铸史,那默認給一個值讓它取鼻疮。
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颠毙、使用該關聯(lián)的請求
如下圖:
4疗涉、完整的例子:事例代碼
二、XPath Extractor
XPath Extractor是另一個可被用來提取頁面給定內容的Post Processor吟秩,XPath Extractor的使用方式與Regular Expression Extractor類似咱扣,只不過需要在該Extractor中指定的不是正則表達式,而是給定的XPath路徑涵防。
用xpath從前一個請求中取闹伪。這種形式比較適合于返回為xml片段的情況沪铭。在需要獲得數(shù)據(jù)的請求上右擊添加一個后置處理器-->xPath Extractor。引用名稱即下一個請求要引用的參數(shù)名稱偏瓤,如填寫body杀怠,則可用${body}引用它。
Xpath一般用于返回xml用得多厅克。
XPath Extractor的設置界面:
l? Use Tidy?:當需要處理的頁面是HTML格式時赔退,必須選中該選項,當需要處理的頁面是XML或XHTML格式(例如证舟,RSS返回)時硕旗,取消選中該選項。
l? Reference Name:存放提取出的值的參數(shù)女责。
l? XPath Query:用于提取值的XPath表達式漆枚。
l? Default Value:參數(shù)的默認值。
三抵知、小結這兩種方式
正則表達式提取器和XPath Extractor都可以用來提取給定頁面中的特定文本墙基,并將其保存在參數(shù)中,這兩種方式各有優(yōu)缺點刷喜。
正則表達式提取器可以用于對頁面任何文本的提取残制,提取的內容是根據(jù)正則表達式在頁面內容中進行文本匹配;
而XPath Extractor則可以提取返回頁面任意元素的任意屬性。
相比較而言掖疮,
如果需要提取的文本是頁面上某元素的屬性值痘拆,建議使用XPath Extractor;
而如果需要提取的文本在頁面上的位置不固定,或者不是元素的屬性氮墨,建議使用正則表達式提取器。