从jmeter post请求中提取值

时间:2016-06-10 05:30:04

标签: jmeter

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

我已经彻底how to extract value from request in Jmeter但是没有用。

3 个答案:

答案 0 :(得分:1)

不确定为什么你需要它,因为你发送"某事"你应该已经拥有了这样的东西"因此,您不需要提取它,但是在这里:

为了保存第一个参数值(如果使用"正文数据"模式,则保存整个发布数据):

  1. 添加Beanshell PostProcessor作为HTTP请求的子项。
  2. 将以下代码放入PostProcessor"脚本"面积:

    String request = ctx.getCurrentSampler().getArguments().getArgument(0).getValue();
    vars.put("request", request);
    
  3. 您可以根据需要将提取的值作为${request}进行访问。

    澄清:

    有关在JMeter测试中使用Beanshell测试元素中的JMeter和Java API的更多信息,请参阅How to Use BeanShell: JMeter's Favorite Built-in Component指南。

答案 1 :(得分:0)

一种简单的方法是使用JSON Path Extractor。

有 对于你给出的例子 { "data" : { "name" : "john_doe", } }

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

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

Beanshell和“正则表达式提取器”当然会起作用,但如果你不熟悉它们可能会有点难用。

答案 2 :(得分:0)

我在我的http请求中添加了一个Beanshell PostProcessor,代码如下。

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);
 }    

说明:我以json的身份收到了我的请求并将其放入EMAIL中。现在我可以在我的其他请求中使用EMAIL作为变量。

然后,我添加了一个jp @ gc Json Path Extractor,并将其应用于Jmeter Varaible。 现在,Email将用作变量,其中包含我的json请求,我可以使用jsonPath Extractor进行提取。