我在这个主题上找到了几个类似的主题,但是到目前为止我还没有找到应用解决方案的运气。我正在学习JMeter,我给出的练习是(1)创建一个简单的HTTP请求,(2)用正则表达式提取器提取CSRF令牌,然后(3)通过beanshell脚本将提取的令牌写出到jmeter.log。
由于我需要接下来获取该值并通过beanshell脚本运行它,我假设使用BeanShell PostProcessor将是这里的方法。我尝试过以下几种变体:
log.info("令牌是:" + vars.get("令牌"));
测试运行正常,但随后会出现在生成的日志中:
INFO o.a.j.u.BeanShellTestElement:令牌为:null
最后,由于我理解后处理器按顺序颠倒运行,我把它放在我的正则表达式提取器之上(尽管我已经尝试了它反向,效果没有区别):
我确定我犯了一些菜鸟的错误,但我开始用谷歌搜索圈子。任何建议都会非常感激!
答案 0 :(得分:1)
Beanshell后处理器必须在正则表达式提取器之后,否则该变量尚不可用
答案 1 :(得分:1)
关于您的查询本身:为了能够从另一个PostProcessor中的正则表达式提取器访问值,您需要将后处理器放在正则表达式提取器下面。
关于一般方法:
答案 2 :(得分:0)
经过详尽的努力,我得到了使用 BEANSHELL POST处理器中的正则表达式提取器中定义的变量的解决方案。
简单地,您需要遵循JMeter中访问变量的标准格式:
${variablename}
即
log.info("${variablename}");
如果您尝试使用vars.get() method
访问这些变量,它将无法正常工作。因此,只需像通常使用$ {variable name}一样调用变量即可。
随附了示例屏幕截图: