Jmeter.从beanshell预处理器获取当前HTTP采样器主体数据



在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;

我解决了这个问题

最新更新