-1

我有一个场景,我需要等待响应文本。我需要发送相同的请求,直到获得所需的响应文本。我将我的 http 样本包含在带有计数器的 while 循环中。现在我无法获得正确的 while 条件。尝试以下条件。

${__javaScript(("${recordTypeLabel1}"!="asdf" && ${counter} < 5),)} ${__jexl3("${recordTypeLabel1}" != "asdf",)} 两者都失败了。如何处理?请帮忙。

Threadgroup     
Once only controller Login 
loop controller  
            HTTP req 
            HTTP req 
            While loop {
            Counter 
            HTTP request
            HTTP Request 
               JSON extractor 
            }
           HTTP req  
Once only Controller Logout
4

1 回答 1

1

__jexl3() 函数的正确语法是:

${__jexl3("${recordTypeLabel1}" != "asdf" && ${__jm__While Controller__idx} < 5,)}

不要使用 __javascript() 函数,因为它是某种形式的性能反模式,如果您需要编写一些额外的逻辑脚本,请坚持使用 __jexl3() 或__groovy()函数

此外,您不需要引入计数器,因为JMeter 5.0有一个特殊的预定义变量称为${__jm__While Controller__idx},它保存 While 控制器的从零开始的迭代次数。(如果您将 While 控制器的标签更改为其他内容 - 请确保相应地修改变量)

  1. 循环次数超过阈值时退出

    在此处输入图像描述

  2. 当变量值变为预期时退出:

    在此处输入图像描述

于 2020-04-01T10:56:46.137 回答