如何在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();
import org.apache.jmeter.config.Argument;
导入org.apache.jmeter.config.Arguments;
参数argz=ctx.getCurrentSampler().getArguments();
对于(int i=0;i
${EMAIL}
李>
澄清:
- 上述代码将提取
request参数(如果有)的值,并将其存储到email
JMeter变量中email
-类实例的简写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