Jmeter session 和cookie 常用用法汇总笔记

Cookie线程间传递

1.取得cookie

直接这样写即可获取,当然具体你的系统参数是什么会略有变化。

2.添加BeanShell Sampler,并设置成全局变量

$,)}

3.在第2个线程组中添加HTTP Cookie 管理器

并添加一个参数如下,即可使用。

JSESSIONID $ 168.1.1.61 /

过程中发生的问题记录

下图1,是跨线程后cookie找不到了。

下图2,是同线程可以找到cookie。一样的脚本放二个线程运行的结果。

session、cookie 实现关联

session和cookie的概念:

cookie保持你访问的权限信息。

session限制你访问权限信息的有效时间,一旦过期就不能在访问了,比如说我们经常遇到了,很长一段时间网页没有去操作,就会自动退出登陆。你要进行操作就必须要重新登陆!

关联的概念:

既然说到了上面的session和cookie,其实这个session和cookie是每次都会变化的!所以在session和cookie失效后,你需要重新获取这些值,如果用到Jmeter来做这些操作的话,你不能每次手动去修改,那么就需要用关联,做好关联后,让Jmeter自动去获取这些变化的值。

什么是关联:

一句话解释:在每次请求中都会变化的值,且每次都是从服务器发送过来的,那么就需要去做些特别的处理来获取这个动态值!这个就叫做关联!举个例子:

1.你往数据库插入数据时,有一个id,这个就是动态值,每次都会变得!

2.你提交bug时,bug id 是动态值,有序递增的!

3.比如上面说到的cookie和session

你如果用Jmeter来代替你手工做这些事情,就需要用到关联,让Jmeter自动跟服务器请求并传给下一步。

实例说明:

1.用Badboy录制脚本后,导出为jmeter文件,并在Jmeter中打开

2.有时在http请求页面中“路径”会看到网页链接引用:http://www.xxx.com/xxx_app;jsessionid=。或者网页链接后显示:?jsessionid 或者显示一串数字,如下图所示:

解决:

1、因为Session默认是需要Cookie支持的,但有些客户浏览器是关闭Cookie !

【而jsessionid是存储在Cookie中的,如果禁用Cookie的话,服务器得不到jsessionid,这样也就没法根据jsessionid获得对应的session,获得不了session就得不到session中存储的数据了。】

这个时候就需要在URL中指定服务器上的session标识,也就是类似“jsessionid=5F4771183629C9834F8382E23BE13C4C” 这种格式。

2、此jsessionid是跟随上一网页获取的,是随机的故,我们需要通过上一网页的响应数据,引用该jsessionid

步骤:

1)、查找到上一页面中响应数据中的jessionid的value

2)、在该页面下添加子节点:右键添加正则表达式,我们要获取的是jsessionid,正则如下:

正则表达式一定要正确,不能贪婪匹配,必须精确匹配!

关于正则表达式的场景应用如下

正则提取器的一般使用场景是, 在我第二个请求参数中需要加入第一个请求的返回值, 此时通过正则提取器可以提取第一个请求返回值中指定的字段信息并赋值, 在第二个请求参数中直接引用该变量即可

jmeter的正则提取器截图如下:

简单介绍下其中几个比较重要的字段的信息, 如下表

接下来看下实际的使用, 如图所示, 取登录后返回的ticket值, 此时因为方便说明, 使用来获取返回值中双引号之间的内容:

添加debug元件, 展示debug信息如下,

此时,表示取的是第一列的值, 第一列是由模板上的确定的, 此时Match No设置为,表示会返回所有匹配值数组的元素, 可以看到返回有三个元素分别为,,此时, 若有多行数据, 且模板处设置的为, 如果选择第一个数组元素, 则:

取的都是第一个匹配值的第一列全部的数据

取的是第一个匹配值的第一列第一行的数据,

取的是第一个匹配值的第一列第二行的数据,

取的是第二个匹配值的第一列第一行的数据,

一个比较简单的正则, 如下, 只取匹配值中的第一个元素:

Match No设置为, 表示只会选择返回的匹配值数组当中的第一个元素, 直接使用$表示即可, 此时, 若有多行数据, 且模板处设置的为, 则:

取的都是第一列全部的数据

取的是第一列第一行的数据,

取的是第一列第二行的数据。

3)、这样,正则表达式就获取到了每次请求都会变化的jsessionid 然后再请求,就会发现jsessionid会自动变化,由Jmeter来获取!

END

拂晓时分

我伫立在阒无一人的街角

我熬过了夜晚

——博尔赫斯

一切经得起再度阅读的语言,

一定值得再度思索

——梭罗

世界读书日

WORLD BOOK DAY

2018年4月23日

你穿过世事朝我走来 迈出的每一步都留下了一座空城 这时,一支从来世射出的毒箭命定了我 唯一的退路 --仓央嘉措

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180915G01K3700?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券