从jmeter post请求中提取值

从jmeter post请求中提取值,jmeter,Jmeter,我想在jmeter中提取通过post请求发送的参数值。 我知道正则表达式用于提取响应值或请求URL,但这里我想提取post请求的值 我已经彻底检查过了,但它不起作用。不确定为什么需要它,因为您发送了“某物”,您应该已经有了“某物”,因此您不需要提取它,但现在您可以: 为了保存第一个参数值(如果使用“Body data”模式,则保存整个post数据): 添加为HTTP请求的子级 将以下代码放入后处理器的“脚本”区域: 您将能够在需要时以${request}的形式访问提取的值 澄清: ctx-类

我想在jmeter中提取通过post请求发送的参数值。 我知道正则表达式用于提取响应值或请求URL,但这里我想提取post请求的值


我已经彻底检查过了,但它不起作用。

不确定为什么需要它,因为您发送了“某物”,您应该已经有了“某物”,因此您不需要提取它,但现在您可以:

为了保存第一个参数值(如果使用“Body data”模式,则保存整个post数据):

  • 添加为HTTP请求的子级
  • 将以下代码放入后处理器的“脚本”区域:

  • 您将能够在需要时以
    ${request}
    的形式访问提取的值

    澄清:

    • ctx
      -类实例的速记
    • getCurrentSampler()
      -在HTTP请求的情况下,sampler代表

    有关在JMeter测试中使用Beanshell测试元素的JMeter和Java API的更多信息,请参阅指南。

    一种简单的方法是使用JSON路径提取器

    只有 你举的例子
    {“数据”:{“名称”:“约翰·多伊”}

    '变量名称:YourNewVar' 'JSON路径:$.data.name' 应该可以,但你可能需要做一些实验

    您可能需要添加一个“调试采样器”(它是标准采样器之一),并将其标题$YourNewVar放入其中,以便查看提取的内容


    当然,Beanshell和“正则表达式提取器”可以工作,但如果您不熟悉它们,可能会更难使用

    我在http请求中添加了一个Beanshell后处理器,代码如下

    import org.apache.jmeter.config.Argument;
    import org.apache.jmeter.config.Arguments;
    
    Arguments argz = ctx.getCurrentSampler().getArguments();
    for (int i = 0; i < argz.getArgumentCount(); i++) {
       Argument arg = argz.getArgument(i);
        String a = arg.getValue();
        vars.put("EMAIL",a);
     }    
    
    import org.apache.jmeter.config.Argument;
    导入org.apache.jmeter.config.Arguments;
    参数argz=ctx.getCurrentSampler().getArguments();
    对于(int i=0;i
    说明:我收到一个json格式的请求,并将其发送到电子邮件中。现在我可以在其他请求中使用电子邮件作为变量

    然后,我添加了一个jp@gcJson路径提取器,我将其应用于Jmeter变量。 现在,Email将被用作变量,它包含我的json请求,我可以使用jsonPath提取器进行提取

    更多细节。
    import org.apache.jmeter.config.Argument;
    import org.apache.jmeter.config.Arguments;
    
    Arguments argz = ctx.getCurrentSampler().getArguments();
    for (int i = 0; i < argz.getArgumentCount(); i++) {
       Argument arg = argz.getArgument(i);
        String a = arg.getValue();
        vars.put("EMAIL",a);
     }