下面以购物App常用的收藏功能为例,讲述如何在 JMeter 中使用 cookie 进行登录态操作。具体的操作步骤如下所示:
第一步、录制查看收藏列表的 HTTP请求:
录制查看收藏列表的HTTP请求,只需启动 Fiddler、配置代理、执行查看收藏操作即可,在此不再赘述,谢谢!录制好查看收藏列表的HTTP请求后,脚本页面视图如下所示:
因此时我们没有登录,在脚本中也无对应的 Cookie 存在,假如我们此时运行脚本,那么请求响应将会提示我们未登录,如下所示:
第二步、读取 Cookie 配置文件
配置路径:【添加 / 配置元件 / CSV Data Set Config】,读取第一步获取的 Cookie 参数文件中的数据。若不知如何配置,敬请参阅博文:JMeter学习-010-JMeter 配置元件实例之 - CSV Data Set Config 参数化配置,配置完成的读取配置如下所示:
第三步、添加 HTTP Cookie管理器:
操作路径:【添加 / 配置元件 / HTTP Cookie管理器】,打开 HTTP Cookie管理器的配置页面,如下图所示:
- 名称:对该 Cookie管理器的自定义概述
- 注释:对该 Cookie管理器的详细描述
- 每次反复清除Cookies?:选择后,则每次线程组运行时,都会清除 cookie。PS:若是手动添加的cookie,则不会被清除。
- Implementation:履行的协议。
- Cookie Policy:Cookie的管理策略。有如下几种可选项:
- compatibility:推荐选择此种策略。这种兼容性设计要求是适应尽可能多的不同的服务器,尽管不是完全按照标准来实现的。如果你遇到了解析 Cookies 的问题,你就可能要用到这一个规范。有太多的web站点是用CGI脚本去实现的,而导致只有将所有的 Cookies 都放入 Request header 才可以正常的工作。这种情况下最好设置 http.protocol.single-cookie-header 参数为 true。
- rfc2109:是HttpClient使用的默认Cookies协议。
- rfc2965:定义了版本2并且尝试去弥补在版本1中 Cookie 的 RFC2109 标准的缺点。规定 RFC2965 最终取代 RFC2109 发送 RFC2965 标准 Cookies 的服务端,将会使用 Set-Cookie2 header 添加到 Set-Cookie Header 信心中,RFC2965 Cookies 是区分端口的。
- ignorecookies:此规格忽略所有 Cookie。被用来防止 HttpClient 接受和发送的 Cookie。
- netscape:是最原始的 Cookies 规范,同时也是 RFC2109 的基础。尽管如此,还是在很多重要的方面与 RFC2109 不同,可能需要特定服务器才可以兼容。
- default:默认。
第四步、参数化 HTTP Cookie管理器:
利用第二步配置读取的数据,引用其名称,对上步中的 HTTP Cookie管理器,实行参数化,配置完成的 HTTP Cookie管理器如下所示:
第五步、添加 Cookie 至 HTTP请求:
将上述配置的 HTTP Cookie管理器,放到相应的 HTTP请求下即可,如下图所示:
第六步、执行脚本,查看结果:
我们通过 HTTP 请求的信息可以看出 HTTP Cookie 是否正确添加至 HTTP请求,如下图所示:
脚本执行结果如下所示:
方法二
我们也可通过在【HTTP信息头管理器】添加 Cookie 信息,从而实现登录态操作。
操作步骤如下:
1、获取 Cookie(通过浏览器等,如下 Firefox 浏览器所示),例如通过浏览器获取 Cookie 信息,保存到文本 cookie.txt 中
2、通过 【CSV Data Set Config】读取 cookie.txt 中的 cookie 信息(可参阅 JMeter学习-012-JMeter 配置元件之-HTTP Cookie管理器-实现 Cookie 登录),保存为变量 xn_cookie50
3、在对应请求的 HTTP信息头管理器中添加如下图红框所示的 cookie 头信息配置(若无信息头管理器,可右键 HTTP请求,依次选择【添加 / 配置元件 / HTTP信息头管理器】添加)
4、运行脚本查看脚本执行结果,如下所示,成功进行了登录态的操作
此种方法在查看结果树的请求标签页的 cookie 信息显示的是空(如下图所示)
同时对应的 Cookie 信息也不会在结果数文件中出现。若想在查看结果树输出 xml 中隐藏 cookie 的亲们,可采用此种设置方法。