在HTTP Sampler中发送查询之前,我需要在beanshell预处理器中对此查询进行一些更改。所以,问题是如何从beanshell预处理器访问当前采样器主体数据?我可以获取名称、路径、IP等(例如sampler.getPropertyAsString("HTTPSampler.domain")),但不知道如何获取主体数据。
请在下面找到答案(假设我们谈论的是HTTP请求)
- 名称:
sampler.getName()
- IP:
sampler.getUrl().getHost()
- 路径:
sampler.getUrl().getPath()
-
如果您需要请求参数:
Arguments arguments = sampler.getArguments(); for (int i=0;i<arguments.getArgumentCount();i++) { Argument argument = arguments.getArgument(i); String name = argument.getName(); String value = argument.getValue(); // do what you need }
如果您需要更多信息,请参阅HTTPSamplerProxy JavaDoc
如果不是HTTP请求,您可以弄清楚这个sampler
变量指的是什么类
log.info(sampler.getClass().getName());
从jmeter.log文件中找出类名并查找JavaDoc。
有关Beanshell脚本的更多信息,请参阅如何使用Beanshell:JMeter最喜欢的内置组件指南。
感谢@Dmitri T
我得到了
13:28:13 ERROR - jmeter.util.BeanShellInterpreter: Error invoking bsh method: eval Sourced file: inline evaluation of: ``import org.apache.jmeter.protocol.http.control.Header; sampler.getHeaderManag . . . '' : Typed variable declaration : Class: Arguments not found in namespace
使用时出错
Arguments arguments = sampler.getArguments();
for (int i=0;i<arguments.getArgumentCount();i++)
{
Argument argument = arguments.getArgument(i);
String name = argument.getName();
String value = argument.getValue();
// do what you need
}
导入后
import org.apache.jmeter.config.Argument;
import org.apache.jmeter.config.Arguments;
我解决了这个问题