JMeter - HTTP 请求看不到 BS 预处理器中定义的变量

JMeter - HTTP request does not see variable defined in BS PreProcessor

已使用以下代码使用 BeanShellPreProcessor 定义了 HTTPRequest:

log.info(vars.get("view_state"));
props.put("view_state", vars.get("view_state"));

接下来是 HTTP 请求的配置:

但是,最终请求不识别这个参数,显示如下:

...&javax.faces.ViewState=%24%28view_state%29...

问题是为什么它不被识别为变量?

您正在将值放入 JMeter 属性并尝试从 JMeter 变量中读取它们。属性和变量是不同的野兽,需要以不同的方式访问。

解决方案在:

  1. 将您的 props.put 语句更改为 vars.put(其他语法保持不变)。vars 是 shorthand 到 JMeterVariables class, 使用它你将操纵 JMeter 变量而不是属性
  2. 保持您的 Beanshell 脚本不变,并使用 __P() function 访问 属性 中的值,例如 ${__P(view_state)}

更多信息:How to Use BeanShell: JMeter's Favorite Built-in Component