首先说明一个概念,jmeter内的变量和属性是不一样的,表现在:

1可用范围:

正则提取器或json提取器或其它提取器赋值后的引用名称都是变量,实际可用范围只有当前线程组;然而当有些后置处理器如BeanShell 后置处理程序处理成jmeter属性时,可用范围将扩展到整个测试计划,也就是说跨线程组使用就会用到这个。

2使用方式:

变量基本就是${变量名}的方式来引用,如${ww}。而属性不同,如下文中的${__property(newtoken,,)}。

一 正则表达式提取器:

(1)提取响应头中的cookie

1.譬如要提取下图中response headers 中set cookies,实际上这在登录请求中非常普遍

jemeter获取变量 jmeter提取变量_数据

2.登录取样器,添加--后置处理器--正则表达式提取器

jemeter获取变量 jmeter提取变量_json_02

说明:

  • 要检查的响应字段要选择信息头
  • 引用名称即变量名,后续记得使用就好,我用ww代替
  • 正则表达式:Set-Cookie: SESSION=(.*); Path=/注意:()括起来的部分就是要提取的,即赋值到变量ww的内容
  • 因为只有1个部分要提取,所以模板这里填写$1$;如果多个括号,则可以是$2$$3$等等。

 

jemeter获取变量 jmeter提取变量_jemeter获取变量_03

3.这时候就根据两种使用情况进行选择:

  1.-------正则提取的变量想要整个测试计划可用:

  • 打开函数助手

jemeter获取变量 jmeter提取变量_json_04

  • 点击生成,就可复制,脚本${__setProperty(newtoken,${ww},)},意为将ww变量的值赋值给newtoken属性

 

jemeter获取变量 jmeter提取变量_线程组_05

  •  然后登录取样器--添加--后置处理器--BeanShell PostProcessor

jemeter获取变量 jmeter提取变量_json_06

  • 在下图位置粘贴复制的脚本即可,

jemeter获取变量 jmeter提取变量_json_07

  • 在测试计划--配置元件-添加 HTTP信息头管理器

jemeter获取变量 jmeter提取变量_json_08

  • 同样通过函数助手得到脚本${__property(newtoken,,),意为取值newtoken属性,Cookie一栏输入此脚本

jemeter获取变量 jmeter提取变量_jemeter获取变量_09

  •  这样另外一个线程组项目查询2就可以用这个cookie了。(其它类型提取器也可以用后置处理器置为属性再在别的线程组使用,不再赘述。)

jemeter获取变量 jmeter提取变量_jemeter获取变量_10

 

  2.-------正则提取的变量仅仅想在本线程组使用:

 那么这时候根本就不需要后置处理器,

下图可看到我将http信息头管理器移入线程组内部,Cookie一栏填入的是${ww},直接取变量的值

jemeter获取变量 jmeter提取变量_数据_11

同个线程组的另外的取样器传值Cookie也是没问题的

 

jemeter获取变量 jmeter提取变量_数据_12

 

 说一种可能犯错误的情况:如果你将信息头放在测试计划下,而Cookie这边放的是变量不是属性,可以看到项目查询2线程组内取样器是没有Cookie的

jemeter获取变量 jmeter提取变量_数据_13

 

jemeter获取变量 jmeter提取变量_数据_14

 

(2)提取响应体中的数据(在响应体结果非标准json格式时常用,如果是标准json格式用json提取器将更加方便)

 1、比如需要提取如下响应文本中的 “<title>百度一下,你就知道</title>” 里面的 “百度一下,你就知道”:

 

 

jemeter获取变量 jmeter提取变量_线程组_15

 

 2、设置正则表达式提取器:

jemeter获取变量 jmeter提取变量_jemeter获取变量_16

 

 

 

二 json提取器:

说明:

1.个人认为,json提取器是不好提取响应头的,所以这是上面我用正则提取cookie的原因,如果这里有错误欢迎指正;

2.json提取器是用于提取标准json格式返回数据时用的,我尝试去提取非标准json格式返回数据,结果是没有提取成功的。

至于返回数据格式是不是json,看下响应标头的Content-Type就行。

jemeter获取变量 jmeter提取变量_线程组_17

 

 

各个选项填写说明如下:

其中路径表达器中$表示根,而.表达连接下级节点的意思。

 

 

 

jemeter获取变量 jmeter提取变量_json_18

 

 


三 Xpath提取器:

这个就很局限了,一般只用于提取返回数据是html格式的数据 ,即返回页面。用的不多,不再赘述。