jmeter學習記錄--11--jmeter正則表達式


在jmeter里正則表達式用的位置比較多。

一、正則表達式

功能是從請求的響應結果中取到需要的內容,作為下一個接口的入參從而實現關聯。正則表達式提取器可配合Debug Sampler來查看各變量取值。

對應session位於信息頭,格式類似於 Set-Cookie:JSESSION=1SEDEGGDFJSDKFJASDLKGJAD;

 

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

正則表達式:

    ():括起來的部分就是要提取的。()括號里表示要的數值,(相當於LR左邊界,     )相當於LR的右邊界
    .:匹配任何字符串。
    +:一次或多次。
    ?:不要太貪婪,在找到第一個匹配項后停止。

模板:用$$引用起來,如果在正則表達式中有多個正則表達式,則可以是$2$$3$等等,表示解析到的第幾個值給引用名稱。$0$表示隨機取值,$1$表示取第1個值,$2$表示取第2個值,$n$表示取第n個值,$1$$2$表示取第1第2共2個值;

匹配數字:-1表示全部取值,0表示隨機取值,1表示取值第一個,2表示取值第2個。。。

缺省值:沒取到值時,默認用這個。

 

問題1:(.+?) 與(.*?)  區別

(.+?)  匹配一個以上

(.*?)   匹配0個及以上,要取的值是空值的時候可以取到

比如labelId":"";  要取labelId的值,使用(.+?) 匹配不到值,使用(.*?) 就可以取到值為空對應寫法為 labelId":"(.*?) ";

如果正則中有轉義怎么辦?

id?labelId":"1290"   正則寫法 id\?labelId":"(.+?)"
labelId\":\"1290\"     正則寫法 labelId\\":\\"(.+?)\\"
labelId":(1290),       正則寫法 labelId":\((.+?)\),

 

問題2:提取固定位置變量

 

把全部值(-1)取出來,然后取其中第二個值(id_1)

 

問題3:一個表達式匹配多個參數

 調用方法${list_g1} ${list_g2}  

  • 表達式:name="(.+?)" value="(.+?)"
  • 模板:$1$$2$
  • MYREF: file.namereadme.txt
  • MYREF_g0: name="file.name" value="readme.txt"
  • MYREF_g1: file.name
  • MYREF_g2: readme.txt

 

 

 

二、自帶錄制時

http代理服務器時,選擇包含模式、不包含模式。

只包含指定的地址的請求,如只www.test.com 對應  .+(test\.com).+      ,ip:8080/mcp-manage/ 對應  .+(8080/mcp).+

不包含圖片,如

 

三、網上看到的一些示例

例1: <input type="hidden" name="hidName" value="(.*)">   // 提取HTML中隱藏域的值

例2:^(.*)$    // 提取整個response返回 

例3:<input value="(.+?)".*\n.*My Label   // 提取My Label關聯的input的值

<input value="radio43" type="radio" name="myradio" id="long_nested_path"/> 
<label for="long_nested_path">My Label</label> 

例4:"(.+:create:.+?)"                           // 提取下面link的href的值 
<a href="?wicket:interface=:4:create::ILinkListener:"> 

 

 

測試正則表達式的工具:RegexTester


免責聲明!

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



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