有一个 POST 请求同时提交出生日期和年龄。
我从之前的请求中找到了出生日期,通过正则表达式提取器提取了它,并在 POST 请求中传递了变量。
但是我没有从之前的请求中找到年龄。还尝试通过 Firebug 找出 Age 元素。但它没有找到,因为这个字段是由出生日期字段自动计算的,而且该字段是只读的。
我如何获得年龄字段的值?
可能的解决方案可能是使用一些 Jmeter 内置函数或使用任何脚本语言编写一些程序。但我不知道如何在 Jmeter 中做到这一点。
提前致谢。
有一个 POST 请求同时提交出生日期和年龄。
我从之前的请求中找到了出生日期,通过正则表达式提取器提取了它,并在 POST 请求中传递了变量。
但是我没有从之前的请求中找到年龄。还尝试通过 Firebug 找出 Age 元素。但它没有找到,因为这个字段是由出生日期字段自动计算的,而且该字段是只读的。
我如何获得年龄字段的值?
可能的解决方案可能是使用一些 Jmeter 内置函数或使用任何脚本语言编写一些程序。但我不知道如何在 Jmeter 中做到这一点。
提前致谢。
没有看到响应,我不能说是否可以提取。一个可行的解决方法是将后处理器添加到从中提取 DOB 的请求中(这可以是 jsr223 或 beanshell),您可以从那里获取 DOB:
String dob = vars.get{"dateOfBirth"}
从那里您需要将其解析为日期并将其与当前日期进行比较以获取年龄。然后,您需要放置“Age”变量,以便 JMeter 可以访问它。
vars.put("age", String.valueOf(age))
假设您有变量,即“生日”,其值为“1970-05-15”,您可以使用Beanshell 预处理器计算出人的年龄,如下所示:
将以下代码放入 PreProcessor 的“脚本”区域
import java.text.SimpleDateFormat;
String birthDate = vars.get("birthDate");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd");
Date dateOfBirth = sdf.parse(birthDate);
Calendar dob = Calendar.getInstance();
dob.setTime(dateOfBirth);
Calendar today = Calendar.getInstance();
int age = today.get(Calendar.YEAR) - dob.get(Calendar.YEAR);
if (today.get(Calendar.MONTH) < dob.get(Calendar.MONTH)) {
age--;
} else if (today.get(Calendar.MONTH) == dob.get(Calendar.MONTH)
&& today.get(Calendar.DAY_OF_MONTH) < dob.get(Calendar.DAY_OF_MONTH)) {
age--;
}
vars.put("age",String.valueOf(age));
${age}
有关“yyyy-mm-dd”模式的解释和有关如何定义与应用程序日期和时间格式匹配的模式的信息,请参阅SimpleDateFormat JavaDoc ,以及如何使用 BeanShell:JMeter 最喜欢的内置组件指南,以了解 JMeter 中的脚本。