如何使用while控制器在JMeter中读取JSON提取器?

如何使用while控制器在JMeter中读取JSON提取器?,jmeter,Jmeter,我的场景是:我已经创建了一个对象,我必须提取该对象的日志。日志包含10个ID,每个ID的状态为正在运行或已完成等 我想检查每个ID的状态,如果它是完成的,那么需要运行下一个采样器;如果失败,则退出循环 我尝试了而控制器的条件是${{uuujavascript(${IDstatus}”!=“FINISHED”)}。循环永远不会退出,即使状态为finished您的JSON响应包含finished字符串,并且您正在将其与finished进行比较。JavaScript中的字符串区分大小写,因此x!=X

我的场景是:我已经创建了一个对象,我必须提取该对象的日志。日志包含10个ID,每个ID的状态为
正在运行
已完成

我想检查每个ID的状态,如果它是
完成的
,那么需要运行下一个采样器;如果失败,则退出循环


我尝试了
而控制器
的条件是
${{uuujavascript(${IDstatus}”!=“FINISHED”)}
。循环永远不会退出,即使状态为
finished

您的JSON响应包含
finished
字符串,并且您正在将其与
finished
进行比较。JavaScript中的字符串区分大小写,因此
x
!=<代码>X

所以我的期望是,如果您将While控制器条件更改为

${__javaScript("${IDstatus}" !="finished")}
您的While控制器将按预期开始工作

参考资料:


您能分享JSON对象的详细信息吗?我现在无法发布截图。但我能达到你的要求。使用
JSON提取器
提取响应后,为每个控制器添加
,并输入JSON提取器的
输入变量
开始索引
0
结束索引
留空。在
输出变量名
中输入
returnVar
。现在,添加
If controller
并输入条件
“${returnVar}”==“finished”
。在
If controller
中放置请求。如果满足条件,将执行相应的采样器,否则不执行。如果这对你有帮助,请告诉我。同样,您也可以使用
JSR223采样器
实现。谢谢您的回答。你提出的解决方案似乎不起作用。它只是跳过整个foreach控制器。我“我通过在请求中使用全局变量将foreach控制器保持在第二个线程组中。它可以很好地与控制器一起工作,而唯一的问题是它没有读取条件,即使满足条件,也会继续运行请求。这是否可以同时运行foreach和if控制器?如果在json提取器中放入匹配号=1,则偶数条件有效。但我想检查所有10个ID的状态。这是我的示例JSON
{“phew”:[{“status”:“running”},{“status”:“running”},{“status”:“running”},{“status”:“running”},{“status”:“finished”},{“status”},{“finished”},{“status”:“finished”},{“finished”},{“status”:“finished”},{“status”:“finished”},{“status”:“running”}]}
,当我设计流时,我得到了如下所示的响应。只有当状态为
finished
时,它才会触发下一个请求,否则它将跳过。下面是设置。条件是${uu javaScript(${Status}”!=“FINISHED”)}和json expr$..[0]。id匹配号-1。截图2017-05-04,上午10时23分。状态字符串已完成。错误表达式为$..[0]。状态