JMeter:在 beanshell post 处理器中使用正则表达式提取器值
JMeter: Using a regex extractor value in beanshell post processor
我在这个主题上发现了几个类似的话题,但到目前为止我还没有成功应用我找到的解决方案。我正在学习 JMeter,我得到的练习是 (1) 创建一个简单的 HTTP 请求,(2) 使用正则表达式提取器提取 CSRF 令牌,然后 (3) 写出提取的通过 beanshell 脚本标记到 jmeter.log.
所以提取令牌很简单:
由于接下来我需要通过 beanshell 脚本获取该值并 运行 它,因此我假设使用 BeanShell 后处理器将是实现此目的的方法。我尝试了以下几种变体:
log.info("The token is: " + vars.get("token"));
测试 运行 没问题,但结果日志中出现了:
INFO o.a.j.u.BeanShellTestElement:令牌为:null
最后,由于我了解 post 处理器 运行 的顺序是颠倒的,所以我将它放在我的正则表达式提取器上方(尽管我已经尝试过将其颠倒过来,但效果没有区别):
我确定我犯了一些菜鸟错误,但我开始 运行 我在谷歌搜索中兜圈子。任何建议将不胜感激!
Beanshell post 处理器必须在正则表达式提取器之后,否则变量尚不可用
关于您的查询本身:为了能够从其他 Post 处理器中的正则表达式提取器访问值,您需要将 Post 处理器 下方 正则表达式提取器。
关于一般方法:
- 根据JMeter Best Practices starting from JMeter 3.1 you should be using JSR223 Test Elements and Groovy language
- 一般parsing HTML with regular expressions is not the best idea, I would suggest considering switching to CSS/JQuery Extractor代替。
经过详细的努力,我得到了在 BEANSHELL POST PROCESSOR.
中使用正则表达式提取器中定义的变量的解决方案
简单你需要遵循JMeter中访问变量的标准格式:
${variablename}
即
log.info("${variablename}");
如果您尝试使用 vars.get() method
访问这些变量,它将不起作用。因此,只需像我们通常使用 ${variable name} 那样调用变量即可。
附上示例截图:
Screenshot
我在这个主题上发现了几个类似的话题,但到目前为止我还没有成功应用我找到的解决方案。我正在学习 JMeter,我得到的练习是 (1) 创建一个简单的 HTTP 请求,(2) 使用正则表达式提取器提取 CSRF 令牌,然后 (3) 写出提取的通过 beanshell 脚本标记到 jmeter.log.
所以提取令牌很简单:
由于接下来我需要通过 beanshell 脚本获取该值并 运行 它,因此我假设使用 BeanShell 后处理器将是实现此目的的方法。我尝试了以下几种变体:
log.info("The token is: " + vars.get("token"));
测试 运行 没问题,但结果日志中出现了:
INFO o.a.j.u.BeanShellTestElement:令牌为:null
最后,由于我了解 post 处理器 运行 的顺序是颠倒的,所以我将它放在我的正则表达式提取器上方(尽管我已经尝试过将其颠倒过来,但效果没有区别):
我确定我犯了一些菜鸟错误,但我开始 运行 我在谷歌搜索中兜圈子。任何建议将不胜感激!
Beanshell post 处理器必须在正则表达式提取器之后,否则变量尚不可用
关于您的查询本身:为了能够从其他 Post 处理器中的正则表达式提取器访问值,您需要将 Post 处理器 下方 正则表达式提取器。
关于一般方法:
- 根据JMeter Best Practices starting from JMeter 3.1 you should be using JSR223 Test Elements and Groovy language
- 一般parsing HTML with regular expressions is not the best idea, I would suggest considering switching to CSS/JQuery Extractor代替。
经过详细的努力,我得到了在 BEANSHELL POST PROCESSOR.
中使用正则表达式提取器中定义的变量的解决方案简单你需要遵循JMeter中访问变量的标准格式:
${variablename}
即
log.info("${variablename}");
如果您尝试使用 vars.get() method
访问这些变量,它将不起作用。因此,只需像我们通常使用 ${variable name} 那样调用变量即可。
附上示例截图:
Screenshot