转自 https://blog.csdn.net/five3/article/details/53842283

jmeter是测试过程中会被用到的一个测试工具,我们即可用来进行压力的压测,也可以用来对接口进行功能检查,不仅仅是HTTP的结果,还有DB、TCP、FTP等等。当然它还有很多其它有用的功能,比如代理服务器、镜像服务器、telnet等等。今天主要说的是它的Cookie管理器,因为在使用这个功能的时候踩过了坑,也没有找到其他梳理过。

在Jmeter里对Cookie进行存取时需要用到HTTP Cookie管理器组件,具体位置在配置元件列表下,见下图:

通常我们都是在一个线程的Sampler里添加,因为每一个线程都应该有一个自己的Cookie管理器,添加成功后Jmeter的 Cookie 管理器的界面如下:

上面的图中主要存Cookie的操作,我们直接添加了一个JSESSIONID的cookie,具体的值是从一个变量中取出的;需要注意的是域、路径需要填上,尤其是域;因为Jmeter现版本默认不支持跨域的请求,不填的话设置的Cookie不会被带上。

接下来就是取Cookie的操作,通常取的Cookie都是从Response Header里取的,取的目的一般都是给另一个不同的线程来用,因为如果是同一个线程的不同次迭代的情况那么Jmeter会自动带上,无需我们设置。那取去cookie的步骤有哪些呢?

  1. 首先需要修改jmeter.properties文件
  2. 找到CookieManager.save.cookies=true并设置为true
  3. 保存配置文件重启jmeter
  4. 在需要取Cookie的线程里添加一个Http Cookie管理器
  5. 可以默认为空,但是一定要添加,否则是不会存储cookie变量的

经过上述几个步骤的操作,我们执行线程之后,获取到的cookie就会被保存在线程变量里,具体的变量名格式为COOKIE_xxxx,其中xxxx为具体的实际cookie名;这样在同一个线程内其它操作组件都是可以直接通过${COOKIE_xxxx}来获取的

提示:

文档中说cookie变量是线程内有效,线程外无效,但是实际测试同一个线程组的其它线程是可以直接访问的

如果是跨线程组的情况,我们还可以有其它的方式来进行cookie变量的共享,最方便的是下面这种方式

import org.apache.jmeter.util.JMeterUtils;
String value = JMeterUtils.getPropDefault("name","");
JMeterUtils.setProperty("name", "value");

另一种是下面的方式,

if (bsh.shared.myObj == void){
// not yet defined, so create it:
myObj = new AnyObject();
}
bsh.shared.myObj.process();

因为直接就可以取到也就没试了,原内容出自官网文档,http://jmeter.apache.org/usermanual/best-practices.html,而我踩的坑就是在取cookie的时候没有添加一个空的http cookie管理器,以及尝试了其它一些无效的变量共享的方式。

(转) jmeter 获取cookie的更多相关文章

  1. 如何用 Jmeter 获取 Cookie

    如何用 Jmeter 获取 Cookie 1.Jmeter 安装目录bin文件加下jmeter.properties文件修改,搜索CookieManager.save.cookies= 将Cookie ...

  2. Jmeter获取Cookie并传递到下一个线程---跨线程后cookie找不到了

    网上找了一堆文章没有一个是实际操作的,自己边试边查边摸索终于找到了一个全套的办法. 原创文章,转载请说明出处. 1.取得cookie 直接这样写就可以了${COOKIE_JSESSIONID},当然具 ...

  3. 如何不做登录请求而获取cookie到Jmeter里

    如何不做登录请求而获取cookie到Jmeter里? 登录被测系统后,按F12,找到如下位置,将这个表格所有信息都复制到Jmeter的HTTP Cookie管理器元件,这样就可以不需要登录,能继续发送 ...

  4. jmeter手写脚本,使用正则获取cookie(禁用cookies管理器)

    注:这里以bugfree为例 1.bugfree登录时会有重定向,这会导致每个URL都会有.因此要手动获取cookie的时候,需要去掉重定向勾选 正则获取动态PHPsession 获取到值后,放到信息 ...

  5. Jmeter入门18 Jmeter添加cookie的两种方式

    jmeter中添加cookie可以通过配置HTTP Cookie Manager,也可以通过HTTP Header Manager,因为cookie是放在头文件里发送的. 实例:博客园点击添加新随笔  ...

  6. jmeter给cookie设置sessionId避免其他脚本多次登录

    1.相关知识: http头部可以设置:浏览器显示内容类型,如content-type:text/html http头部可以存放:浏览器的cookie信息——cookie是对用户身份进行判断的内容 ht ...

  7. Jmeter之cookie的处理方式,token处理

    cookie是什么 由于http是无状态的协议,一旦客户端和服务器的数据交换完毕,就会断开连接,再次请求,会重新连接,这就说明服务器单从网络连接上是没有办法知道用户身份的.怎么办呢?那就给每次新的用户 ...

  8. jmeter-登录获取cookie后参数化,或手动添加cookie, 再进行并发测试

    以下情况其实并不适用于直接登录可以获取cookie情况,直接可以登录成功,直接添加cookie管理,cookie可以直接使用用于以下请求操作. 如果登录一次后,后续许多操作,可以将cookie管理器放 ...

  9. js获取cookie

    js获取cookie 之前用jQuery.cookie来获取cookie,虽然简单,但是项目上又多引用了一个插件,总觉得不太好,下面是我封装的js原生获取cookie的函数. function get ...

随机推荐

  1. echart 常用配置

    mytextStyle={ color:"#333", //文字颜色 fontStyle:"normal", //italic斜体 oblique倾斜 font ...

  2. jquery刷新页面代码

    window.location.reload()刷新当前页面.parent.location.reload()刷新父亲对象(用于框架)opener.location.reload()刷新父窗口对象(用 ...

  3. 咸鱼入门到放弃9--jsp中使用的JavaBean

    一.什么是JavaBean JavaBean是一个遵循特定写法的Java类,它通常具有如下特点: 这个Java类必须具有一个无参的构造函数 属性必须私有化. 私有化的属性必须通过public类型的方法 ...

  4. BZOJ4827 [Hnoi2017]礼物 多项式 FFT

    原文链接http://www.cnblogs.com/zhouzhendong/p/8823962.html 题目传送门 - BZOJ4827 题意 有两个长为$n$的序列$x$和$y$,序列$x,y ...

  5. UOJ#405. 【IOI2018】组合动作

    原文链接https://www.cnblogs.com/zhouzhendong/p/IOI2018Day1T1.html 题解 首先二分一下,花费2次操作求出第一位的字符. 假设第一个字符是 Y,答 ...

  6. yum和rpm

    rpm简介 这是一个数据库管理工具,可以通过读取数据库,判断软件是否已经安装,如果已经安装可以读取出来所有文件的所在位置等,并可以实现删除这些文件. rpm:RPM is Redhat Package ...

  7. coolSQL安装与使用

    由于笔者最近支援其他项目,所使用的数据库为informix 所以安装一个coolSQL客户端方便些,当然命令行方式也可以,但是感觉不太友好,下面把安装与简单使用过程分享给大家. 一.下载coolSQL ...

  8. .NET 简单多线程

    取消跨线程访问 Control.CheckForIllegalCrossThreadCalls = false; 1.开启新线程 无参数 Thread thread = new Thread(方法名) ...

  9. Loadrunner乱码问题解决方案(录制&&运行)

    在使用Loadrunner录制和回放时有时会出现乱码,从而导致脚本运行失败,这让我们很难定位脚本问题所在. 1.乱码产生的原因 1)loadrunner工具使用的是UTF-8编码,但被测系统使用的是G ...

  10. Django——Ajax

    1.Ajax简介 AJAX(Asynchronous Javascript And XML)--"异步的JavaScript与XML". Ajax使用Javascript语言与服务 ...