Jmeter利用正則表達式提取器提取登錄cookie供下一步使用


最近在學Jmeter,遇到需要登錄之后才能進行下一步操作的場景,網上查了各位大神的資料,東拼西湊總算是做好滿足需求了,寫一下經過和步驟吧。

一、正常調用

按正常流程添加線程組、HTTP請求(登錄和添加)、HTTP請求默認值、HTTP信息頭管理器等,然后跑看看能不能通過。

 

 

添加失敗,試着在同一個線程組下添加HTTP Cookie 管理器,看看能不能成功:

 

 通過了。但是現在線程數是和循環次數都是1,如果循環次數是1000次,那也登錄接口也要調用1000次,影響性能測試結果,這個時候可以把登錄單獨放到另一個線程組中,然后在添加的接口中調用登錄的Cookie。

  

  

報401(鑒權失敗)了,沒法調用上一個線程組登錄的Cookie。下一步就看看怎么獲取上一個線程組的返回數據,供別的線程組調用。

 

二、提取登錄接口返回的cookie。

1、在登錄的HTTP請求下添加正則表達式提取器

 

 2、然后通過頁面調用登錄的接口,拿到登陸后獲取的Cookie和添加需要用到的cookie值

登陸后獲取的Cookie:

  

 

 

 

添加需要用到的cookie值:

 

3、按下圖設置好正則表達式提取器

  

 

填寫說明:

要檢查的響應字段:現在是需要從信息頭中獲取數據,所以現在選中“信息頭”

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

正則表達式:

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

    .:匹配任何字符串。
    +:一次或多次。
    ?:在找到第一個匹配項后停止。
    這里用到的是Cookie后面的值,所以只需要拿到登錄接口返回的cookie中SESSIONID=E19055FDC13C1677B05AAE6C736A4A6E的值就好了

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

匹配數字:0代表隨機取值,1代表全部取值,通常情況下填0

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

 

 這個時候就把正則表達式提取器設置好了,但是經測試,不能跨線程組調用參數,所以還需要在登錄HTTP請求下添加BeanShell PostProcessor關於這個組件的介紹可以自行查一下

 

三、設置跨線程組調用參數

1、在登錄HTTP請求下添加BeanShell PostProcessor

 

 

 2、設置參數如下圖所示,填入參數名${logincookie}和腳本${__setProperty(logincookie,${logincookie})}

 

 3、在登錄HTTP請求下添加HTTP信息頭管理器,加一行,名稱填抓包抓到的信息頭中的鍵(Cookie),值填BeanShell PostProcessor中往下傳的參數(${__P(變量名)})

   

 

 4、跑一下請求 

 

 

 已經可以成功添加了。

 

 

參考的博文或來源:

Jmeter關聯,正則表達式提取器使用

 Jmeter跨線程組調用變量

 

 


免責聲明!

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



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