如何在Jmeter中从请求中提取值

如何在Jmeter中从请求中提取值,jmeter,Jmeter,嗨,我正在传递一封电子邮件,这是一个时间函数,如下所示 email = ${__time(MMddyy)}_${__time(HMS)}@yopmail.com 每次调用变量email时,此函数的值都会更改。 我想将这个函数生成的值存储到一个变量中,并在其他请求中使用它 因此,目前我在两个不同的http请求中收到两封不同的电子邮件,因为我的两个http请求之间有一些时间延迟 我想做的是。。通过从请求中提取值并在第二个http请求中传递,存储在第一个http请求中发送的电子邮件 POST dat

嗨,我正在传递一封电子邮件,这是一个时间函数,如下所示

email = ${__time(MMddyy)}_${__time(HMS)}@yopmail.com
每次调用变量email时,此函数的值都会更改。 我想将这个函数生成的值存储到一个变量中,并在其他请求中使用它

因此,目前我在两个不同的http请求中收到两封不同的电子邮件,因为我的两个http请求之间有一些时间延迟

我想做的是。。通过从请求中提取值并在第二个http请求中传递,存储在第一个http请求中发送的电子邮件

POST data:
email=062915_160738%40yopmail.com
我知道如何从html响应中提取。。但有没有办法从jmeter中的请求中提取

如果是这样的话,有人能告诉我如何做到这一点吗


谢谢

您可以将时间戳值存储在一个变量中,然后使用此时间戳变量在任意位置创建电子邮件,而不是整个电子邮件。
这样,您可以随时随地收到相同的电子邮件。

是HTTP采样器吗?如果是这样,只需放入beanshell后处理器:

String prevQuery = prev.getQueryString(); //your request text
System.out.println(prevQuery );
也适用于任何采样器:

String prevQuery  = prev.getSamplerData();
  • 添加Beanshell后处理器作为发送POST请求的请求的子级
  • 将以下代码放入后处理器的“脚本”区域

    import org.apache.jmeter.config.Argument;
    导入org.apache.jmeter.config.Arguments;
    参数argz=ctx.getCurrentSampler().getArguments();
    对于(int i=0;i
  • 如果需要,请将生成的值引用为
    ${EMAIL}
    澄清:

    • 上述代码将提取
      email
      request参数(如果有)的值,并将其存储到
      email
      JMeter变量中
    • ctx
      -类实例的简写
    • vars
      =类实例的简写
    • 参数
      参数
      ——您可以从JMeterContext JavaDoc中了解到这一点

    有关JMeter中Beanshell脚本的更多信息,请参阅指南。

    您可以使用正则表达式提取器从请求URL中提取电子邮件地址

    添加正则表达式提取器作为发送post请求的采样器的子级。 在正则表达式提取器中,在响应字段中选择URL,以检查而不是正文


    您应该能够以这种方式从请求中提取电子邮件id。

    添加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 req_body = arg.getValue();
        vars.put("req_Json",req_body);
     }
    
    现在使用jp@gcJson路径提取器提取电子邮件的值

    Json expression = $['email']
    
    并将值存储在
    email\u value\u extact

    现在将变量
    ${email\u value\u extact}
    用于您想要使用的任何地方。 最后,

     ${req_Json}=
    "email":"062915_160738%40yopmail.com",
    "name":"abc xyz"
    
    Json expression = $['email']
    
    ${email_value_extacted} = 062915_160738%40yopmail.com