jmeter 如何获取cookie

Jmeter中传递cookie值

 

场景:用户登陆后会本地会保存cookie,cookie是用来跟服务端验证此用户已经登陆过的重要信息,但是如何获取并在其他请求时将此cookie传递给服务器呢?

在线程组下面之直接添加HTTP Cookie管理器,Jmeter会自动将线程组下面的cookie值保存并在此线程组中其他API中传递的,首先,要确保jmeter.properties中CookieManager.save.cookies=true
 
 

那么,跨线程间怎么传递cookie?

获取参数值->设置为全局变量->调用参数,下面详细介绍一下操作步骤

方法一:
  1. 通过抓包工具(Fiddler,Charles,network)等可知道cookie是在响应Header或者响应文本中返回可客户端的


     
    响应信息
  1. 添加正则表达式获取cookie值,需要检查的响应字段需要选择【信息头】
Set-Cookie: PHPSESSID=(.*); path=/; HttpOnly 

其中,
引用名称:数据名称
正则表达式:参看正则式将匹配的数据提取出来
模板:表示使用提取到的第几个值,如1:表示取第1个
匹配数字:0代表随机取值,1代表全部取值
缺省值:如果正则表达式未匹配到,即使用该值

 
正则式提取器
  1. 添加BeanShell PostProcessor,并将正则表达式提取器中的值设置为全局变量
${__setProperty(newPHPSESSID,${PHPSESSID},)}; 
 
BeanShell PostProcessor

同时,也可通过下面方式在BeanShell PostProcessor设置全局变量:

import org.apache.jmeter.util.JMeterUtils; JMeterUtils.setProperty("Cookie", "${PHPSESSID}"); 
 
image.png
  1. 在其他需要调用的线程下添加HTTP Cookie管理器,并取出环境变量值
${__property(newPHPSESSID,,)}
 
HTTP Cookie管理器

同样,亦可通过添加前置BeanShell PreProcessor处理器,并通过代码取出环境变量,并将它设置为局部变量;而后在线程组下方添加HTTP Cookie管理器并调用此参数

import org.apache.jmeter.util.JMeterUtils; String value = JMeterUtils.getProperty("Cookie"); vars.put("Cookie",value); 
 
BeanShell PreProcessor
 
HTTP cookie管理器
  1. 最后运行线程组就ok了,接口A请求头中有cookie信息了


     
    结果树
方法2:

除了步骤3中使用的配置元件与方法1不一样外,整体操作类似
步骤3:在其他需要调用的线程下添加HTTP信息头管理器,并取出环境变量值

扫描二维码关注公众号,回复: 9548858 查看本文章
 

猜你喜欢

转载自www.cnblogs.com/jane0318/p/12401189.html