【问题标题】:Jmeter. Get current HTTP sampler body data from beanshell preprocessor万用表。从 beanshell 预处理器获取当前的 HTTP 采样器主体数据
【发布时间】:2014-10-14 07:54:05
【问题描述】:

在 HTTP 采样器中发送查询之前,我需要在 beanshell 预处理器中对此查询进行一些更改。那么,问题是如何从 beanshell 预处理器访问当前的采样器主体数据?我可以获取名称、路径、IP 等(例如 sampler.getPropertyAsString("HTTPSampler.domain")),但不知道如何获取正文数据。

【问题讨论】:

  • 你能解释一下,你到底想使用什么身体数据?
  • 我想获取在正文数据选项卡的文本框中输入的请求文本。

标签: jmeter load-testing


【解决方案1】:

请在下面找到答案(假设我们谈论的是HTTP Request

  • 姓名: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
    }
    

如果您需要更多信息,请参阅HTTPSamplerProxyJavaDoc

如果不是 HTTP 请求,你可以弄清楚这个 sampler 变量指的是什么类

log.info(sampler.getClass().getName());

从 jmeter.log 文件中找出类名并查找 JavaDoc

有关 Beanshell 脚本的更多信息,请参阅How to use BeanShell: JMeter's favorite built-in component 指南。

【讨论】:

  • 是的,看起来不错。我可以使用参数,谢谢。那么,有没有办法在“正文数据”选项卡中访问查询?
  • 如果您正在寻找无法表示为名称-值对的原始正文,它将是第一个参数的值。你可以参考sampler.getArguments().getArgument(0).getValue())
  • 出现错误:Typed variable declaration : Class: Arguments not found in namespace
  • @DmitriT 上面说的检索 IP 和 Path 的函数相互颠倒了,请修改。
  • 刚刚偶然发现了这个。对我来说,这些位丢失了。需要导入:import org.apache.jmeter.config.Argument;import org.apache.jmeter.config.Arguments; 并获得正确的采样器,使用上下文 ctx.getCurrentSampler().getArguments()
【解决方案2】:

谢谢@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;

我解决了这个问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多