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