如何配置正则表达式。 While控制器中的提取器以停止循环

时间:2019-06-28 13:38:13

标签: jmeter

我在以下情况下配置了While控制器:

${__javaScript("${Status}" != "BatchId not found")}

和正则表达式提取器:

已创建变量的名称:Status

正则表达式:(.+?)

模板:$1$

匹配号:1

此While控制器中的GetGetAsyncResponses请求检查异步批处理请求的结果,直到捕获到该批处理的所有结果为止。

首先,我启动批处理请求,然后使用GetNextAsyncResponses请求进行循环,该请求检查是否有该批处理的结果。 批处理请求完成后,我得到一个带有字符串“ BatchID not found”的响应正文,表示没有更多结果可用。

当第一个带有字符串“未找到BatchID”的响应弹出时,循环应停止GetNextAsyncResponses。

但是不幸的是,即使在4-5次循环后显示字符串,循环也永远不会停止。

我还尝试了在类似情况下发现的未成功的条件。

${__jexl3("${BatchId}" != "BatchId not found")}
${__javaScript("${BatchId}".indexOf("BatchId not found") == -1,)}

我不确定这里缺少什么错矿。

任何帮助将不胜感激。

非常感谢...

2 个答案:

答案 0 :(得分:0)

我建议按以下捕获方式更新正则表达式:

enter image description here

然后将While Controller条件设置为${__jexl3("${Status}" == "NOT_FOUND")}

答案 1 :(得分:0)

While Controller中使用的变量必须与您在Regular Expression Extractor中定义的变量匹配,如果正则表达式提取器中有Status,则需要在变量中使用相同的变量。控制器时

${__jexl3("${Status}" != "BatchId not found")}

或通过__groovy() function

${__groovy(!vars.get('Status').equals('BatchId not found'),)}

更多信息:Using the While Controller in JMeter