在线程组中,我有“jsr 223 预处理器”,我在其中设置了这样的变量 -
List<String> EDPResultList = new ArrayList();
vars.putObject("EDPResultList",EDPResultList);
然后在 while 控制器中,我有一个“HTTP 请求采样器”。为了处理响应,我添加了一个“jsr 223 后处理器”,我正在尝试像这样访问对象 -
Object resObj = vars.getObject("EDPResultList");
我得到了例外 -
“ERROR o.a.j.e.JSR223PostProcessor: Problem in JSR223 script, JSR223 PostProcessor For Initial Get javax.script.ScriptException: groovy.lang.MissingPropertyException: no such property: EDPResultList for class: Script238 at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:324) ~[groovy-all-2.4.16.jar:2.4.16]”
如何定义一个列表,我可以在整个“线程组”和“While Controller”的多次迭代中使用该列表。
要在JMeter中使用ArrayList,请使用以下方法:
import java.util.List;
List<String> list = new ArrayList<>();
list.add("John");
list.add("Peter");
list.add("Parkar");
vars.putObject("List",list);
JSR223后处理器位于第二个采样器内,同时控制器。将以下代码放在脚本区域中。这是访问数组列表的方法
ArrayList result = vars.getObject("List");
for (String value : result) {
log.info("Values are : " + value);
}
vars.put("flow", "false");
你的Groovy代码本身没有任何问题:
很可能由于某种原因,您的JSR223
预处理器没有被执行,要么是由于范围规则,要么是缺少采样器,因为没有采样器就无法执行预处理器。尝试在预处理器的末尾添加 log.info('something'),
以确保它已运行。