下面的代码在 While 控制器 ${__jexl3(${__jm__While Controller__idx} < 3 && "${responseCode}" != "200",)}
以上是正则表达式提取器
结果:对于成功的请求,它也循环了 3 次,但我只想为失败的请求循环,对于成功的请求,它应该执行一次提前谢谢
采用While Controller、If Controllers和Flow Control Action (FCA) 控制器的另一个解决方案。
${__groovy(${__jm__WC__idx}.toInteger() < 5)}
如图所示,添加请求及其下方的两个If控制器,带有Flow Control Action元素
将以下内容添加到第一个 If Controller
${JMeterThread.last_sample_ok}
${__jexl3(!${JMeterThread.last_sample_ok})}
如果您想做其他事情,此外,要重试,在 FCA 元素中设置暂停,在 FCA 中添加 JSR 223 元素并包含操作。例如,我想记录失败请求的用户名并重试。
String username = vars.get("username")
int current_loop_count = vars.get("__jm__WC__idx").toInteger()
log.warn("Attempt# ${current_loop_count.next()} $username ")
current_loop_count.next()<5?:ctx.getThreadGroup().getOnErrorStartNextLoop()