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 变量中读取它们。属性和变量是不同的野兽,需要以不同的方式访问。
解决方案在:
- 将您的
props.put
语句更改为 vars.put
(其他语法保持不变)。vars
是 shorthand 到 JMeterVariables class, 使用它你将操纵 JMeter 变量而不是属性
- 保持您的 Beanshell 脚本不变,并使用 __P() function 访问 属性 中的值,例如
${__P(view_state)}
更多信息:How to Use BeanShell: JMeter's Favorite Built-in Component
已使用以下代码使用 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 变量中读取它们。属性和变量是不同的野兽,需要以不同的方式访问。
解决方案在:
- 将您的
props.put
语句更改为vars.put
(其他语法保持不变)。vars
是 shorthand 到 JMeterVariables class, 使用它你将操纵 JMeter 变量而不是属性 - 保持您的 Beanshell 脚本不变,并使用 __P() function 访问 属性 中的值,例如
${__P(view_state)}
更多信息:How to Use BeanShell: JMeter's Favorite Built-in Component