Jmeter笔记(10)添加cookie管理器

转:https://www.jianshu.com/p/91c6411398f5
 
1、自动管理,像浏览器一样存储和发送Cookie
jmeter默认不会保存cookies,需要加上cookie manager。
加一个空的cookie manager即可以自动保存cookie,并且能够在同一个线程组之间传递cookie。
要把Cookies保存到线程变量中,jmeter.properties文件中定义属性"CookieManager.save.cookies=true"。
线程组---添加---配置元件---HTTP Cookie 管理器
线程变量名为COOKIE_ + Cookie名。属性CookieManager.name.prefix= 可以用来修改默认的COOKIE_的值。 

 

 

2、手动添加Cookie到Cookie Manager,需求注意的是这些Cookie的值被会所有线程共享
需要注意的是域、路径必须填上,尤其是域。
JMeter会检查收到的cookies是否对URL有效。这意味着跨域的cookie不能被存储。如果你有窃听行为,或者想要存储跨域cookies,需要在jmeter.poperties中设置:“ CookieManager.check.cookies = false”。
 
3、跨线程传递变量
利用BeanShell PostProcessor设置全局变量,可以通过JMeterUtils.setProperty和JMeterUtils.getPropDefault方法实现。
1)在生成cookie的请求中添加beanshell postprocessor后置处理器,并添加如下脚本,把cookie保存在Jmeter属性参数中:
import org.apache.jmeter.util.JMeterUtils;
JMeterUtils.setProperty(“cookie_name”, “cookie_value”);  //设置jmeter属性-全局变量
其中cookie_name和cookie_value分别换成你对应的cookie名称(不带COOKIE_前缀)和cookie值。
2)在需要使用cookie的另一个线程组的请求中添加beanshell preprocessor前置处理器,并添加如下脚本,取出cookie的值,并存入线程变量中:
import org.apache.jmeter.util.JMeterUtils;
String value = JMeterUtils.getPropDefault(“cookie_name”); //获取jmeter属性
vars.put(“cookie_name”,value); //put该线程组的变量
这里的cookie_name和前面设置的名称一样。
然后在该线程组中就可以使用${cookie_name}来获取cookie的值,也就是实现了跨线程组传递cookie。

原文地址:https://www.cnblogs.com/testerhappy/p/11855330.html