Jmeter后置处理器 - 正则提取器详解

官方参考文档:

Apache JMeter-User's Manual: Component Reference:Regular Expression Extractorhttps://jmeter.apache.org/usermanual/component_reference.html#Regular_Expression_Extractor

正则表达式提取器

允许用户使用 Perl 类型的正则表达式从服务器响应中提取值。作为后处理器,该元素将在其范围内的每个 Sample 请求之后执行,应用正则表达式,提取请求的值,生成模板字符串,并将结果存储到给定的变量名中。

 

Name: 树中显示的此元素的描述性名称

Apply to:这适用于可以生成子样本的采样器,例如具有嵌入式资源的 HTTP 采样器、邮件阅读器或事务控制器生成的示例。

  • Main sample only - 仅适用于主要样本
  • Sub-samples only - 仅适用于子样本
  • Main sample and sub-samples - 适用于两者.
  • JMeter Variable Name to use -提取将应用于命名变量的内容

匹配依次应用于所有符合条件的样本。例如,如果有一个主样本和 3 个子样本,每个子样本都包含一个正则表达式匹配项(即总共 4 个匹配项)。对于 match number = 3,仅子样本,提取器将匹配第 3个子样本。对于匹配数 = 3,主样本和子样本,提取器将匹配第二个子样本(第一个匹配是主样本)。对于匹配数 = 0或负数,将处理所有符合条件的样本。对于匹配号 > 0,一旦找到足够的匹配项,匹配就会停止。

Field to check:

  • Body - 响应的正文,例如网页的内容(不包括标题)
  • Body (unescaped) - 响应的正文,替换了所有 Html 转义码。请注意,处理 Html 转义时不考虑上下文,因此可能会进行一些不正确的替换

          注意,此选项会极大地影响性能,因此仅在绝对必要时使用它并注意其影响

  • Body as a Document -通过 Apache Tika 从各种类型的文档中提取文本(请参阅查看结果树文档视图部分) 

          注意,作为文档的正文选项会影响性能,因此请确保它适合您的测试

  • Request Headers - 非 HTTP 示例可能不存在
  • Response Headers - 非 HTTP 样本可能不存在
  • URL
  • Response Code - 例如200
  • Response Message - 例如OK 

     标头对 HTTP 示例很有用;对于其他样本类型,它可能不存在

Name of created variable:

存储结果的 JMeter 变量的名称。另请注意,每个组都存储为[refname]_g#,其中[refname]是您作为参考名称输入的字符串,#是组号,其中组0是整个匹配项,组1是来自第一组括号等

Regular Expression:

用于解析响应数据的正则表达式。这必须包含至少一组括号“ () ”来捕获字符串的一部分,除非使用组$0$。不要将表达式括在/ / - 中,除非您当然也想匹配这些字符

Template:

用于从找到的匹配项创建字符串的模板。这是一个带有特殊元素的任意字符串,用于引用正则表达式中的组。引用组的语法是:' $1$ ' 引用组1,' $2$ ' 引用组2,等等。$0$引用整个表达式匹配的任何内容

Match No. (0 for Random)

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

  • 使用零值表示 JMeter 应该随机选择一个匹配项。
  • 正数 N 表示选择第 n个匹配项。
  • 负数与ForEach 控制器一起使用- 见下文。

Default Value

 如果正则表达式不匹配,那么引用变量将被设置为默认值。这对于调试测试特别有用。如果没有提供默认值,那么很难判断正则表达式是否不匹配,或者 RE 元素没有被处理,或者可能使用了错误的变量。

但是,如果您有多个设置相同变量的测试元素,您可能希望在表达式不匹配时保持变量不变。在这种情况下,调试完成后删除默认值。

Use empty default value:

如果复选框被选中并且默认值为空,那么 JMeter 会将变量设置为空字符串,而不是不设置它。因此,例如,当您在测试计划中使用${var}(如果参考名称为 var)时,如果未找到提取的值,则 ${var}将等于空字符串而不是包含${var},这可能如果提取的值是可选的,则很有用


如果匹配数设置为非负数,并且发生匹配,则变量设置如下:

  • refName - 模板的值
  • refName_g n,其中n = 0 , 1 , 2 - 匹配的组
  • refName_g - 正则表达式中的组数(不包括0

如果不匹配,则refName变量设置为默认值(除非不存在)。此外,还删除了以下变量:

  • refName_g0
  • refName_g1
  • refName_g

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

  • refName_matchNr - 找到的匹配数;可能是0
  • refName_ n,其中n = 123等 - 由模板生成的字符串
  • refName_ n _g m,其中m = 0 , 1 , 2 - 匹配n的组
  • refName - 始终设置为默认值
  • refName_g n - 未设置

请注意,在这种情况下, refName变量始终设置为默认值,并且未设置关联的组变量。

有关如何指定修饰符的一些示例,以及有关 JMeter 正则表达式的更多信息,另请参阅响应断言。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值