1、正则表达式提取器介绍

如果有这样的情况:一个完整的操作流程,需要先完成某个操作,获得某个值或数据信息,然后才能进行下一步的操作,也就是常说的接口关联,将上一个请求的响应结果作为下一个请求的参数。

在JMeter中,可以利用正则表达式提取器来帮助我们完成这一动作。

2、正则表达式提取器界面详解

添加正则表达式提取器组件操作:选中“取样器”右键 —> 添加 —> 后置处理器 —> 正则表达式提取器

界面如下图所示:

下面是正则表达式提取器组件的详细说明:

  • 名称正则表达式提取器组件的自定义名称,见名知意最好。
  • 注释:即添加一些备注信息,对该正则表达式提取器组件的简短说明,以便后期回顾时查看。

(1)Apply to:作用范围(返回内容的取值范围)

  • Main sample and sub-samples:作用于父节点的取样器及对应子节点的取样器。
  • Main sample only:仅作用于父节点的取样器。
  • Sub-samples only:仅作用于子节点的取样器。
  • JMeter Variable Name to use:作用于JMeter变量(输入框内可输入JMeter的变量名称),从指定变量中提取需要的值。

(2)Field to check:要检查的响应字段

  1. 主体:响应报文的主体,最常用。
  2. Body(unescaped):是替换了所有的HTML转义符的响应主体内容,注意HTML转义符处理时不考虑上下文,因此可能有不正确的转换,不太建议使用。(即:替换了转义码的Body部分)
  3. Body as a Document:从不同类型的文件中提取文本,注意这个选项比较影响性能。
  4. Response Headers:从响应头信息中提取数据,如果你使用中文语言的JMeter,会看到这一项是信息头,这是中文翻译问题,应以英文为准。
  5. Request Headers:从请求头信息中提取数据。
  6. URL:从请求URL中提取数据。
  7. 响应码(Response Code):提取响应状态码,比如:200、404等。
  8. 响应信息(Response Message):响应信息中提取数据。

(3)第三部分内容

  • 引用名称(Name of created variable):定义提取值的引用变量名称。
  • 正则表达式(Regular Expression):用于提取值的正则表达式。
  • 模板(Template ($i$ where iis capturing group number, starts at 1)):正则表达式的提取模式。如果正则表达式有多个提取结果,则结果是数组形式,模板为$1$,$2$,表示把解析到的第几个值赋给变量,从1开始匹配,以此类推。若只有一个结果,则只能是$1$
  • 匹配数字(0代表随机):正则表达式匹配数据的结果可以看做一个数组,表示如何取值:0代表随机取值,正数n则表示取第n个值,比如1代表第一个,2代表第二个,以此类推。负数则表示提取所有符合条件的值,如-1。
  • 缺省值(Default Value):匹配失败时候的默认值;通常用于后续的逻辑判断,一般通常为特定含义的英文大写组合,比如:ERROR等。
  • Use empty defau't value:使用空值为默认值。

3、正则表达式提取器的使用

需求

  1. 访问网易官网,获取title值。
  2. 将title值放入百度搜索框,进行搜索。

(1)测试计划内包含的元件

添加元件操作步骤

  1. 创建测试计划。
  2. 创建线程组:选中“测试计划”右键 —> 添加 —> 线程(用户) —> 线程组
  3. 在线程组下,添加取样器“HTTP请求”组件:选中“线程组”右键 —> 添加 —> 取样器 —> HTTP请求
  4. 在取样器下,添加后置处理器“正则表达式提取器”组件:选中“取样器”右键 —> 添加 —> 后置处理器 —> 正则表达式提取器
  5. 在线程组下,添加监听器“察看结果树”组件:选中“线程组”右键 —> 添加 —> 监听器 —> 察看结果树

提示:需要重复添加的组件这里不重复描述。

最终测试计划中的元件如下:

点击运行按钮,会提示你先保存该脚本,脚本保存完成后会直接自动运行该脚本。

(2)请求一界面内容

非常简单的Get请求,之前说了很多次了,这里就不做解释了。

界面内容如下图所示:

(3)正则表达式提取器界面内容

我们在编辑正则表达式提取器组件之前,一般先请求一下需要提取返回数据的接口。

因为我们需要先查看一下,需要提取的数据在什么位置,如下图所示:

然后选择RegExp Tester视图模式,先手动编写正则表达式,看看是否能够取到需要的数据。

如下图所示:

之后我们就可以编写正则表达式提取器组件界面了,如下:

编写引用名称、正则表达式、选择第几个模版,匹配数据选择。

正则表达式提取器组件提取出来的数据,会存储在线程变量中,供其他后续接口使用。

(4)请求二界面内容

填写接口的基本请求信息,然后把正则表达式提取器提取出来的数据,作为参数化变量应用到请求中。

如下图所示:

(5)查看结果

我们可以看到再第二个请求中,拿到了第一个请求提取出来的数据“网易”。

如下图所示:

提示:可以添加Debug PostProcessor(调试后置处理器),或者Debug Sampler(调试取样器),来查看正则表达式提取器中,提取出的内容是否正确。

注意:正常跑用例时删除或禁用它们。

4、总结

正则表达式提取器可以用于对任何文本的提取。提取完参数后,相当于把参数以 key-value 的形式放到参数池,以便后面的请求使用。

注意:不能超前引用。

正则表达式提取器XPath提取器的区别:

  1. 正则表达式提取器可以用于对页面任何文本的提取,提取的内容是根据正则表达式在页面内容中进行文本匹配;
  2. XPath提取器则可以提取返回页面任意元素的任意属性;
  3. 如果需要提取的文本是页面上某元素的属性值,建议使用XPath Extractor;
  4. 如果需要提取的文本在页面上的位置不固定,或者不是元素的属性,建议使用正则表达式提取器。

5、正则表达式简单说明

正则表达式(Regular Expression):使用正则表达式解析响应结果,()表示提取字符串中的部分值,请不要使用||,除非你本身需要匹配这个字符。

  1. .代表匹配任意一个字符。
  2. []表示取值范围。

    比如:[0-9]代表匹配0-9之间任意一个数字。

    [a-z]代表匹配a-z之间任意一个字符。

    [A-Z]代表匹配A-Z之间任意的一个字符。
  3. +:匹配前面的子表达式一次或多次。
  4. ?:代表匹配一次或一次也没有。这个符号还有特殊的用法,当放到*号后面的时候,标识取到的数据是非贪婪的。

    说明:贪婪与非贪婪模式是两种不同的表达式匹配行为,贪婪模式在整个表达式匹配成功的前提下,尽可能多的匹配,而非贪婪模式在整个表达式匹配成功的前提下,尽可能少的匹配,即匹配第一个。
  5. *:匹配前面的子表达式零次或多次。
  6. \d:匹配一个数字字符,等价于[0-9]
  7. \w:匹配包括下划线的任何单词字符,等价于[A-Za-z0-9_]
  8. {3}:代表匹配3次,示例如下:

    [1-9][0-9]{4,14}:代表前面的子表达式,至少匹配4次,最多不超过14次。

    1[358]\d{9}:匹配手机号。

    [a-zA-Z0-9_]+@[a-zA-Z0-9]+\.[a-zA-Z]+:匹配邮箱。

提示:常用正则表达式查询:http://tool.oschina.net/uploads/apidocs/jquery/regexp.html

『动善时』JMeter基础 — 36、JMeter接口关联【正则表达式提取器】的更多相关文章

  1. 『动善时』JMeter基础 — 8、JMeter主要元件介绍

    目录 1.测试计划(Test Plan) 2.线程组 3.取样器(sampler) 4.逻辑控制器(Logic Controller) 5.配置元件(Config Element) 6.定时器(Tim ...

  2. 『动善时』JMeter基础 — 37、将JMeter测试结果写入Excel

    目录 1.环境准备 (1)引入操作Excel文件的基础JAR包 (2)引入封装自定义操作Excel文件的JAR包 2.准备测试需要的数据 3.测试结果写入Excel演示 (1)测试计划内包含的元件 ( ...

  3. 『动善时』JMeter基础 — 40、JMeter中ForEach控制器详解

    目录 1.什么是逻辑控制器 2.ForEach控制器介绍 3.ForEach控制器的使用 (1)测试计划内包含的元件 (2)获取学院列表请求内容 (3)JSON提取器内容 (4)ForEach控制器内 ...

  4. 『动善时』JMeter基础 — 7、jmeter.properties文件常用配置

    目录 1.默认语言设置 2.配置默认编码格式 3.GUI图标放大比例设置 4.功能区工具栏图标大小设置 5.视图区目录树图标大小设置 6.内容区编辑字体设置 7.添加JMeter元素快捷键设置 8.捕 ...

  5. 『动善时』JMeter基础 — 33、JMeter察看结果树的显示模式详解

    目录 1.CSS Selector Tester视图 2.HTML查看器 (1)HTML视图 (2)HTML(download resources)视图 (3)HTML Source Formatte ...

  6. 『动善时』JMeter基础 — 38、JMeter中实现跨线程组关联

    目录 1.JMeter中实现跨线程组关联说明 (1)JMeter中实现跨线程组关联步骤 (2)测试计划内包含的元件 2.用户登陆请求的相关操作 (1)进行登陆操作获取Cookie信息 (2)把Cook ...

  7. 『动善时』JMeter基础 — 6、使用JMeter发送一个最基础的请求

    目录 步骤1:创建一个测试计划 步骤2:创建线程组 步骤3:创建取样器 步骤4:创建监听器 步骤5:完善信息 步骤6:保存测试计划 步骤7:查看结果 总结:JMeter测试计划要素 当我们第一次打开J ...

  8. 『动善时』JMeter基础 — 34、JMeter接口关联【XPath提取器】

    目录 1.XPath提取器介绍 2.XPath提取器界面详解 3.XPath提取器的使用 (1)测试计划内包含的元件 (2)网易首页请求界面内容 (3)XPath提取器界面内容 (4)百度首页请求界面 ...

  9. 『动善时』JMeter基础 — 15、使用JMeter实现上传文件

    目录 1.用于演示的项目说明 2.测试计划内包含的元件 3.HTTP请求界面内容 4.查看结果 5.总结 6.补充:MIME类型简介 (1)MIME说明 (2)常见类型 在上一篇文章[使用JMeter ...

随机推荐

  1. 域迁移DA | Learning From Synthetic Data: Addressing Domain Shift for Se | CVPR2018

    文章转自:微信公众号「机器学习炼丹术」 作者:炼丹兄(已授权) 联系方式:微信cyx645016617 论文名称:"Learning From Synthetic Data: Address ...

  2. 【JavaWeb】 Cookie和Session

    Session和Cookie出现的原因: 由于Http是无状态的协议,会话之间没有任何关联,也就是上一次会话和下一次会话没有任何关联,因此出现了会话技术Cookie和Session 下面分别从Cook ...

  3. 缓冲区溢出分析第05课:编写通用的ShellCode

    前言 我们这次的实验所要研究的是如何编写通用的ShellCode.可能大家会有疑惑,我们上次所编写的ShellCode已经能够很好地完成任务,哪里不通用了呢?其实这就是因为我们上次所编写的ShellC ...

  4. Http Get与Post的区别

    GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二. 最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数. 你可能自己 ...

  5. Linux(CentOS-8)安装MySQL8.0.11

    CentOS安装MySQL8.0.11 总的思路就是:安装MySQL,编写配置文件,配置环境变量,成功开启服务,登陆并修改ROOT密码 开启远程访问的思路就是:授权用户所有IP都可以访问,系统的数据库 ...

  6. 【Web前端HTML5&CSS3】05-样式继承与其他概念

    笔记来源:尚硅谷Web前端HTML5&CSS3初学者零基础入门全套完整版 目录 样式继承与其他概念 1. 继承 2. 选择器的权重 3. 长度单位 像素 屏幕分辨率 图像分辨率 百分比 em ...

  7. utf8改成utf8mb4实战教程

    前言: 在 MySQL 中,系统支持诸多字符集,不同字符集之间也略有区别.目前最常用的字符集应该是 utf8 和 utf8mb4 了,相比于 utf8 ,utf8mb4 支持存储 emoji 表情,使 ...

  8. MindSpore模型验证

    技术背景 在前面一篇博客中,我们介绍了MindSpore在机器学习过程中保存和加载模型的方法.这种将模型存储为静态文件的做法,使得我们可以更灵活的使用训练出来的模型,比如用于各种数据集的验证,或者是迁 ...

  9. 简单对比vue2.x与vue3.x响应式及新功能

    简单对比vue2.x与vue3.x响应式 对响应方式来讲:Vue3.x 将使用Proxy ,取代Vue2.x 版本的 Object.defineProperty. 为何要将Object.defineP ...

  10. golang:三次握手四次挥手总结

    TCP的三次握手 所谓三次握手 Three-Way Handshake 是指建立一个TCP连接时,需要客户端和服务端总共发送3个包以确认连接的建立.好比两个人在打电话: 当连接被建立或被终止,交换的报 ...