首页 > 解决方案 > JMeter Http请求在循环控制器中未按预期工作

问题描述

当我使用循环控制器从正则表达式提取器中查看结果时,当我在循环控制器中包含 http 请求时,它会停止工作。

正则表达式提取器格式(将输出多个结果,每个结果有多个组)

name of created variable - pageDetails
Template: blank
Match no -1

之后我初始化了一个循环控制器(带有一个计数器)来检查这个正则表达式的所有结果

在此处输入图像描述

计数器如下

   Starting value =1
    Increment =1
    Maximum value =${pageDetails_matchNr}
    Reference Name =pageDetailsIndex

我在使用计数器的循环中有一个调试采样器

${__evalVar(pageDetails_${pageDetailsIndex}_g1)}  ${__evalVar(pageDetails_${pageDetailsIndex}_g2)}

在使用计数器的循环中也有 http 请求 在此处输入图像描述

如果我在循环控制器中禁用 httprequest,调试采样器将工作,并打印出所有值

但是,如果我启用了 http 请求,调试采样器和 http 请求都只能在第一次迭代中工作,即当 ${pageDetailsIndex} = 1 时。当它高于 1 时,则 ${__evalVar(pageDetails_${pageDetailsIndex}_g1)} 等. 所有返回空白...

标签: jmeter

解决方案


很可能您的正则表达式提取器范围不正确,如果您只想将其应用于一个采样器- 您需要使其成为该特定采样器的子级

从您的解释来看,循环控制器下的 HTTP 请求采样器似乎正在覆盖以前的值,这不应该是这种情况。

另请注意,您的计数器不是必需的,有一个${__jm__Loop Controller__idx} 特殊的 JMeter 变量保存循环控制器当前迭代的值。


推荐阅读