获取JMeter中字符串的出现次数

时间:2014-05-30 17:24:53

标签: regex jmeter

我正在分析一个返回文本(JSON数组)的网站,我正在使用HTTP Request元素。我要做的是检查字符串在响应中出现的次数,例如名为“itemname”的字段。所以我添加了一个正则表达式提取器,将ItemNameVar作为参考名称,^itemname$作为正则表达式,$1$作为模板,-1作为匹配号,以及“找不到“默认值”。我还添加了一个If Controller,它表示"${ItemNameVar_matchNr}" == "1",因为我希望它只发生一次。但是,如果我将其设置为不同的数字,它永远不会失败。我在这做错了什么?谢谢。

2 个答案:

答案 0 :(得分:1)

看起来你的正则表达式存在问题。

我建议使用Beanshell Post Processor而不是正则表达式提取器,因为使用正则表达式解析JSON结构不是很方便。

参考Beanshell代码如下所示:

import org.apache.commons.lang3.StringUtils;

int matches = StringUtils.countMatches(new String(data), "itemname");
vars.put("ItemNameVar_matchNr", String.valueOf(matches));

说明:

  • 第一行 - 导入必要的帮助类
  • 第二行 - data是采样器响应的字节数组表示的简写。方法countMatches计算响应数据的字符串表示中itemname条件的出现次数。结果保存为matches整数变量
  • 第三行 - matches的值保存为名为ItemNameVar_matchNr的JMeter变量

有关JMeter中Beanshell脚本和包含JMeter API用法示例的小Beanshell食谱的更详细说明,请参阅How to use BeanShell: JMeter's favorite built-in component指南。

答案 1 :(得分:0)

您遵循的方法绝对正确。

请检查您的Jmeter脚本。确保您在尝试执行下一个请求后执行 IF控制器是分支机构或控制器

Jmeter IF Controller

希望这会有所帮助。