JMeter的,最流行的开源性能测试工具,可以工作正则表达式,用正则表达式提取。正则表达式是一种用于通过使用高级操作提取文本的必需部分的工具。正则表达式在测试Web应用程序时很流行,因为它们可用于验证和执行Web应用程序响应的操作。

在JMeter中,正则表达式提取器对于从响应中提取信息非常有用。例如,当您请求页面然后需要从下载的页面获取链接时。另一个用例是将提取的信息保存到变量中,因此可以在以后的性能测试中使用它,例如在测试使用令牌认证的应用程序时,例如CSRF / XSRF。

在本文中,我将分享如何在JMeter中使用正则表达式提取器。

我创建了一个非常简单的测试计划,请看图1:

图1

你可能会注意到图像中有一个未知元素; 它是正则表达式提取器后处理器。让我们更仔细地看一下,如图2所示:

图2

正则表达式提取器语法

在JMeter中配置正则表达式时,请使用与Perl5相同的语法。但是JMeter和Perl regexps处理之间存在一个非常重要的区别。在Perl中,您必须使用“//”分隔符来指定regexp。因此,正则表达式reg可能如下所示:〜/ regular_expression /。但是你不能在JMeter中使用“//”作为相同的目的,否则正则表达式将按字面解析,而不是逻辑上。 因此,如果您在 arular表达式中使用分组,请使用“()”括号将一个组与另一个组分开。

配置正则表达式提取器

现在我将简要介绍这个元素的所有字段。

“应用于”单选按钮

您可以选择是将正则表达式应用于主样本结果,子样本/嵌入资源还是两者。

可能的选择是:

  • 仅限主要样本 - 仅适用于主要样本
  • 仅子样本 - 仅适用于子样本
  • 主样本和子样本 - 适用于主样本和子样本
  • JMeter变量 - 表达式应用于填充变量

“要检查的字段”单选按钮

您可以选择应用正则表达式的字段。可能的选择是:

  • 身体 - 反应的主体。您的网页内容(不包括标题)将使用正则表达式进行解析。
  • 正文(未转义) - 响应的正文,替换了所有HTML转义码。请注意,HTML转义的处理不考虑上下文,因此可能会进行一些不正确的替换。
  •  - 响应或请求的标头
  • URL - 请求的URL
  • 响应代码 - 例如200
  • 响应消息 - 例如OK

创建变量的名称 - 解析结果将保存在JMeter中的变量的名称。

正则表达式  - 填写正则表达式进行测试。

模板  - 选择要从正则表达式中提取的组。'$ 1 $'将提取组1,'$ 2 $'将提取组2,依此类推。$ 0 $将提取整个表达式。例如,如果您的响应中有“经济学”一词,并且您搜索正则表达式“(ec)(onomics)”并应用模板$ 2 $$ 1 $,那么在输出变量中您将收到“onomicsec”。如果您应用模板$ 0 $,那么在输出变量中您将收到“经济学”。

匹配¹。 如果有多个字符序列,则允许指定,应该使用哪个变体。重要的提示。如果将“应用于”设置为“主样本和子样本”并指定“匹配¹”= 3,则JMeter将从第二个子样本中选择匹配序列,因为第一个将是主样本。如果指定为零,则JMeter将随机选择匹配。如果指定负数,例如“-2”

如果匹配号设置为负数,则处理采样器数据中的所有可能匹配。变量设置如下:

refName_matchNr - 找到的匹配数; 可能是0

refName_n,其中n = 1,2,3等 - 模板生成的字符串

refName_n_gm,其中m = 0,1,2 - 匹配n的组

refName - 始终设置为默认值

refName_gn - 未设置

指示要使用的匹配项。正则表达式可以多次匹配。

使用零值表示JMeter应随机选择匹配。

正数N表示选择第n个匹配。

这就是正则表达式提取器的选项。现在我将展示一些实际的例子。在所有示例中,我将使用相同的URL通过regexp提取字符串,请参见图3。

图3

提取字符串后,它将被置于变量$ pageLink中,并在“pageLink”HTTP请求中使用,如图4所示。

图4

按字搜索。 如果需要提取带有正则表达式的字符串,这个字符串只是填充Regular Extractor,如图5所示。

图5

执行“ tut.by ”请求并提取正则表达式后,我们将得到以下$ pageLink =经济学,并将在“pageLink”请求中使用,如图6所示。

图6

使用组。您可以使用组移动正则表达式的一部分。例如,您需要找到“经济学”这个词,但在将它放到$ pageLink之前,您需要重新排列单词的一部分。请看图7的语法

图7

我们将在View Results Tree中拥有什么

图8

在regexp中使用类。 正则表达式可以使用字符类。例如,[0-9]表示“任何数字符号”。如果我按照图9设置正则表达式,那么我将从响应正文中获得第3个适当的结果。

图9

“{5,6}”表示结果应包含不少于5且不超过6个字符。以及我们将在图10中的View Results Tree中看到的内容

图10

使用“^”。 “^”表示反转,例如正则表达式[^ 0-9]将查找非数字符号。所以,我将设置regexp,如图11所示

图11

在View结果树中,我将有非常有趣的情况,如图12所示

图12

发生了什么?请看图13

图13

我们捕获了“回车”符号,这是java.net.MalformedURLException的原因。要修复regexp,我会在它之前添加“<”并重新开始测试。现在可以了。

图14

当然,我不能在一篇文章中涵盖使用正则表达式的所有可能和不可能的情况。有关更多信息,请参阅  JMeter正则表达式教程,其中包含详尽的信息。

JMeter使用Jakarta ORO进行正则表达式处理。您可以使用Jakarta ORO Demonstration Applet快速测试正则表达式   ,这是查看结果匹配/组/等的最快方法。

将RegEx(正则表达式提取器)与JMeter一起使用的更多相关文章

  1. Jmeter正则表达式提取器的使用方法(转)

    下面简单介绍一下Jmeter正则表达式提取器的使用方法. 1.添加Jmeter正则表达式提取器:在具体的Request下添加Jmeter正则表达式提取器(Jmeter正则表达式在“后置处理器”下面)  ...

  2. Jmeter利用正则表达式提取器提取登录cookie供下一步使用

    最近在学Jmeter,遇到需要登录之后才能进行下一步操作的场景,网上查了各位大神的资料,东拼西凑总算是做好满足需求了,写一下经过和步骤吧. 一.正常调用 按正常流程添加线程组.HTTP请求(登录和添加 ...

  3. 接口测试工具-Jmeter使用笔记(五:正则表达式提取器)

    (正则表达式提取器是Jmeter关联中的一种)使用场景: 有两个HTTP请求,请求A的返回数据中有一个字段“ABCD”,该字段要作为请求B的入参. 1.添加方式 请求A上右键-->后置处理器-& ...

  4. jmeter正则表达式提取器--关联

    http://desert3.iteye.com/blog/1394934 1.http://www.cnblogs.com/quange/archive/2010/06/11/1756260.htm ...

  5. jmeter数据关联_后置处理器_正则表达式提取器

  6. JMeter学习-011-JMeter 后置处理器实例之 - 正则表达式提取器(三)多参数获取进阶引用篇

    前两篇文章分表讲述了 后置处理器 - 正则表达式提取器概述及简单实例.多参数获取,相应博文敬请参阅 简单实例.多参数获取. 此文主要讲述如何引用正则表达式提取器获取的数据信息.其实,正则表达式提取器获 ...

  7. JMeter学习-009-JMeter 后置处理器实例之 - 正则表达式提取器(二)多参数获取

    前文简述了通过后置处理器 - 正则表达式提取器 获取 HTTP请求 响应结果中的特定数据,未看过的亲,敬请参阅 JMeter学习-008-JMeter 后置处理器实例之 - 正则表达式提取器(一). ...

  8. JMeter学习-008-JMeter 后置处理器实例之 - 正则表达式提取器(一)概述及简单实例

    上文我们讲述了如何对 HTTP请求 的响应数据进行断言,以判断响应是否符合我们的预期,敬请参阅:JMeter学习-007-JMeter 断言实例之一 - 响应断言 那么我们如何获取 HTTP请求 响应 ...

  9. Jmeter—5 关联 响应数据传递-正则表达式提取器

    在测试过程中,遇到一个问题:用户登录成功后服务器会返回一个登录凭证,之后所有的操作都需要带上此凭证.我们怎么获取登录凭证并传递给后续的操作? Jmeter提供了正则表达式提取器,用变量提取参数,后续通 ...

随机推荐

  1. Spring Boot2.0之 jar打包方式

    Jar类型打包方式 1.使用mvn celan  package 打包 2.使用java –jar 包名 war类型打包方式 1.使用mvn celan package 打包 2.使用java –ja ...

  2. Download rtsp.c

    1. [代码][C/C++]代码 /* * Copyright (c) 2011, Jim Hollinger * All rights reserved. * * Redistribution an ...

  3. VC++动态链接库(DLL)编程深入浅出:Q&A(原创)

    Q1:extern “C” 是做什么用的? A1:一种情况是多个文件中,变量声明或者函数声明,需要extern “C”,这种情况在这里不做讨论. 在dll工程中,被extern "C&quo ...

  4. linux命令学习笔记-eval命令详解

    功能说明:重新运算求出参数的内容. 语 法:eval [参数] 补充说明:eval可读取一连串的参数,然后再依参数本身的特性来执行. 参 数:参数不限数目,彼此之间用分号分开. .eval命令将会首先 ...

  5. VC6.0实用小技巧

    VC6.0的若干实用小技巧 .检测程序中的括号是否匹配 把光标移动到需要检测的括号(如大括号{}.方括号[].圆括号()和尖括号<>)前面,键入快捷键 “Ctrl+]”.如果括号匹配正确, ...

  6. 善用搜索--->描述问题 [关于SwipeRefreshLayout]

    遇到了一个问题,SwipeRefreshLayout没法在加载listView之前呈现progressBar.我一直在想,是不是只能在listView加载出来才能呈现它. 发邮件问了一个开发者,他说他 ...

  7. nginx rewrite 导致验证码不正确

    配置nginx里url rewrite的时候,为了使浏览器地址栏的URL保持不变, 使用proxy_pass反向代理,但发现每次都会生成新的jsessionid 解决方法,配置中增加 proxy_co ...

  8. P2060 [HNOI2006]马步距离

    P2060 [HNOI2006]马步距离 数据到百万级别,明显爆搜不行,剪枝也没法剪.先打表.发现小数据内步数比较受位置关系影响,但数据一大就不影响了.大概搜了一个20*20的表把赋值语句打出来.判断 ...

  9. ACM学习历程—BestCoder 2015百度之星资格赛1003 IP聚合(set容器)

    Problem Description 当今世界,网络已经无处不在了,小度熊由于犯了错误,当上了度度公司的网络管理员,他手上有大量的 IP列表,小度熊想知道在某个固定的子网掩码下,有多少个网络地址.网 ...

  10. bzoj 3527: [Zjoi2014]力 快速傅里叶变换 FFT

    题目大意: 给出n个数\(q_i\)定义 \[f_i = \sum_{i<j}{\frac{q_iq_j}{(i-j)^2}} - \sum_{i>j}\frac{q_iq_j}{(i-j ...