Jmeter之HTTP cookie管理器不生效
问题描述:
今天再整理压测脚本的时候,发现接口请求数据一直获取不到正确的值,通过察看结果树发现接口缺少cookie值;于是在接口上增加了http cookie管理器,再次运行发现接口仍然没有获取到cookie值,如下图:;自己通过postman直接请求接口发现接口是没有问题的可以正常返回,于是肯定问题出现在了cookie管理器上。
通过百度查找发现了如下的解决办法:
解决方式一:
进入到jmeter的安装目录,把jmeter.properties文件(在jmeter的bin目录下)的CookieManager.save.cookies=true,并且把#去掉,保存后重启jmeter;(这样修改的理由 是:从Jmeter2.3.2版本后,默认不再存储,如果想要manager自动存储收集到的cookie,需要修改JMeter.property:CookieManager.save.cookies=true;)
结论:未通过,还是未获取到cookie值
解决方式二:
修改cookie管理器cookie policy的值,如下图:
默认值是:standard,结果不行;然后依次尝试里面每一个值;发现当值为netscape的时候,接口可以正常获取cookie的值。
Cookie Policy:cookie策略,从jmeter3.0开始默认是standard,具体是跟服务器端的实现方式有关的,各公司可能不一样,我试用了其它的几个选项都获取不到cookie, 只有netscape才能获取到。所以当你获取cookie有问题时,也可以检查一下这个选项。
补充:http cookie管理器的说明
作用:用于管理Test plan运行时的所有的cookie。可以手动存储,也可以自动存储;
每次反复清除cookie:勾选后将每次请求结束后都会将本次请求产生的cookie进行清除,下次请求时重新获取;
use Thread Group configuration to control cookie clearing:使用线程组配置来控制cookie清除;
cookie policy的值:standard:符合RFC定义的规范。工具默认选中!
standard-strict:符合RFC定义的行为规范。推荐!
ignoreCookies:所有cookie被忽略。与删除或禁用Cookie Manager相同。
netscape:与Netscape Communications发布的原始规范草案相对应。
default:基于随HTTP响应发送的cookie属性,选择RFC,RFC 2109或Netscape草案兼容实施。
rfc2109:符合RFC 2019定义的规范。
rfc2965:符合RFC 2965定义的规范。
compatibility:兼容性,模拟Mozilla FireFox和Internet Explorer等旧版浏览器的行为
参考链接:
https://blog.csdn.net/m0_67695717/article/details/124850524
http://t.zoukankan.com/chenyq-p-14291885.html
https://blog.csdn.net/weixin_45294964/article/details/118969044