我登陆了一些客户列出的页面。我正在通过正则表达式提取器后处理器重新获得所有客户ID。
现在,在随后的请求中,我需要传递那些ID。它被作为“身体数据”传递。通过以下格式:
[19327,15947,14421,18813,20942]
假设有5个客户ID被重新启动,那么我可以使用每个记录的变量,如下所示:
传递变量:[${CustomerId_1},${CustomerId_2},${CustomerId_3},${CustomerId_5}]
发布变量值:[19327,15947,14421,18813,20942]
但是,比方说,只有3个客户ID被重新启动,如果我按上述方式传递变量,那么采样器将会失败,因为目前它只是重新获得3个客户ID记录。
传递变量:[${CustomerId_1},${CustomerId_2},${CustomerId_3},${CustomerId_5}]
发布变量值:[19327,15947,14421,${CustomerId_4},${CustomerId_5}]
如何处理这个问题,PLZ。帮忙。
提前致谢
答案 0 :(得分:1)
将以下代码放入预处理器的“脚本”区域
int customers = Integer.parseInt(vars.get("CustomerId_matchNr"));
StringBuilder requestBuilder = new StringBuilder();
requestBuilder.append("[");
for (int i = 1; i <= customers; i++) {
requestBuilder.append(vars.get("CustomerId_" + i));
if (i != customers) {
requestBuilder.append(",");
}
}
requestBuilder.append("]");
sampler.getArguments().getArgument(0).setValue(requestBuilder.toString());
以上代码将根据匹配数量构建所需的请求行并自动设置请求体。
参考类:
vars
- JMeterVariables sampler
- 提供对父采样器的访问权限,如果是HTTP请求,则为HTTPSamplerProxy
StringBuilder - 附带Java SDK
有关Beanshell脚本的详细信息,预定义变量的说明以及一些有用的示例,请参阅How to Use BeanShell: JMeter's Favorite Built-in Component指南。
答案 1 :(得分:0)
refName_matchNr
将返回匹配数。因此,在您的情况下,CustomerId_matchNr
将为您提供许多customerID。
使用beanshell预处理器运行循环并构造BodyData字符串并将其保存到新变量,在后续采样器中使用该变量。