自动化工具 JMeter beanshell 前置处理器问题

chopper · 2021年03月23日 · 最后由 bocy 回复于 2021年03月29日 · 3311 次阅读

JMeter 测试接口,设置了前置处理器 beanshell preprocessor。
在线程组里的一个 http 请求,在 beanshell preprocessor 脚本里通过参数获取 url 的话(vars.get("url")),请求可正常执行,
但是换成 sampler.sample().getUrlAsString() 这种方式获取 url 时,在 log 里看输出的是正确的 url,但是这个请求却无法正常响应。
测试了很多,只要 beanshell preprocessor 脚本用到了 sampler.sample().getUrlAsString(),原本可正常获取 response 的请求就失败了。

另外,求教,怎么在前置处理器脚本里获取当前 sampler 的请求的 url,就是图中 path 这个参数

共收到 3 条回复 时间 点赞

我在 5.4.1 版本试了一下,直接用 sampler.getPath() 就可以取到,如果要取整个 url,可以用 sampler.getUrl().toString()

bocy 回复

感谢,sampler.getPath() 可以正常使用。还想请教一下啊,为什么 sampler.sample().getUrlAsString() 这个在脚本里,请求就会失败呢?

chopper 回复

你看看报错信息,应该提示你 sampler 没有 sampler() 这个方法,sampler 用的是 org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy 这个类的实例,可以查看 api 文档来知道它有什么方法
https://jmeter.apache.org/api/org/apache/jmeter/protocol/http/sampler/AccessLogSampler.html

021-03-29 20:11:16,702 ERROR o.a.j.u.BeanShellInterpreter: Error invoking bsh method: eval  Sourced file: inline evaluation of: ``sampler.sampler().getUrlAsString();'' : Error in method invocation: Method sampler() not found in class'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册