Groovy JMeter函数和变量
我是JMeter的新手,所以这个问题听起来可能非常愚蠢 我有一个循环,在这个循环中,每次迭代都会更改一个变量(比如说它被称为“raw”)并将其写入文件。变量包含HTML编码的文本,因此必须将其转换为纯文本。我发现这可以通过Groovy JMeter函数和变量,groovy,jmeter,jsr223,Groovy,Jmeter,Jsr223,我是JMeter的新手,所以这个问题听起来可能非常愚蠢 我有一个循环,在这个循环中,每次迭代都会更改一个变量(比如说它被称为“raw”)并将其写入文件。变量包含HTML编码的文本,因此必须将其转换为纯文本。我发现这可以通过\uuu unescapeHtml函数来实现。当我尝试使用它时,效果很好,但最终我总是收到与第一次迭代相同的文本。然后我了解到我必须使用vars.get而不是${}来访问变量。因此,我将${{uu-unescapethtml(${raw}”)}更改为${uu-unescapet
\uuu unescapeHtml
函数来实现。当我尝试使用它时,效果很好,但最终我总是收到与第一次迭代相同的文本。然后我了解到我必须使用vars.get
而不是${}
来访问变量。因此,我将${{uu-unescapethtml(${raw}”)}
更改为${uu-unescapethtml(vars.get(“raw”)}
哪种帮助:vars.get
每次迭代都会获得raw
的新值,但是\uuuUnescapeTHTML
现在根本不起作用-它只是从raw
返回编码文本。我没有成功找到任何关于这个确切问题的信息,所以我有点卡住了。最终使用了
import org.apache.commons.lang3.StringEscapeUtils
...
StringEscapeUtils.unescapeHtml4(vars.get("raw"))
我不知道这是否是一个好方法,但至少它是有效的。我假设您在JSR-223采样器或类似的上下文中使用表达式
${…}
。这些状态表示,这些脚本可以由JMeter缓存。这就是为什么您只能从第一次创建上下文时获取值的原因
对于像${varname}
这样的简单变量求值,对于像${{unescapethtml(…)}
这样的函数调用,情况也是如此
这里的解决方案是:
- 不要在JSR-223上下文中使用可能被缓存的
${…}
- 但是,您可以将这些表达式(
)作为参数,通过JSR-223采样器上标记为${…}
的输入传递到上下文中–同样假设您正在使用它parameters
- 通过使用
StringEscapeUtils\unescapethml4