如何在JMeter中循环执行采样器直到获取指定JSON响应结果?
JMeter实现轮询采样器直到JSON字段状态为success的方案
1. 提取响应中的polling_status字段
给需要轮询的采样器添加JSON Extractor后置处理器:
- 右键目标采样器 → 后置处理器 → JSON Extractor
- 配置参数:
- 引用名称:
polling_status - JSON Path表达式:
$.data.polling_status - 匹配数字:1(取第一个匹配结果)
- 缺省值:
inprogress(避免提取失败时变量为空)
- 引用名称:
2. 用While Controller控制轮询循环
添加While Controller逻辑控制器,并将采样器和JSON Extractor移入其中:
- 右键线程组 → 逻辑控制器 → While Controller
- 设置循环条件:
该表达式会在${__jexl3("${polling_status}" != "success",)}polling_status不等于success时持续执行循环内的采样器。
3. 配置轮询间隔(推荐)
为避免高频请求压垮服务器,添加固定定时器:
- 右键While Controller → 定时器 → 固定定时器
- 设置「线程延迟(毫秒)」:例如
5000(即每5秒轮询一次,可根据业务调整)
4. 添加循环终止保护(可选)
防止因异常导致无限循环,可搭配计数器设置最大轮询次数:
- 右键While Controller → 配置元件 → 计数器
- 引用名称:
polling_count - 起始值:1,递增:1,最大值:20(最多轮询20次)
- 引用名称:
- 修改While Controller的条件为:
${__jexl3("${polling_status}" != "success" && ${polling_count} < 21,)}
5. 验证执行逻辑
运行测试计划后,通过「查看结果树」确认:
- 每次采样后
polling_status变量会被更新 - 当
polling_status变为success时,循环终止,自动执行后续采样器
内容的提问来源于stack exchange,提问作者karthikeyan
相关产品推荐
相关产品推荐

