JMeter脚本登录Microsoft账号时i19参数及timeOnPage函数实现咨询
在JMeter中处理Microsoft登录i19参数的方法
一、i19参数的生成逻辑
i19的值由前端JS函数timeOnPage((new Date).getTime() - r.performance.timing.loadEventEnd)生成,本质是当前时间戳(毫秒)减去页面loadEventEnd事件的时间戳(毫秒),也就是用户在登录页面停留的时长(毫秒)。
二、JMeter具体实现步骤
1. 记录模拟的loadEventEnd时间戳
在获取Microsoft登录页面的HTTP请求(比如命名为「获取登录页面」)之后,添加JSR223 PostProcessor,用Groovy脚本记录请求完成时的时间戳,模拟浏览器的loadEventEnd:
// 保存登录页面加载完成的时间戳到JMeter变量 vars.put("loadEventEnd", String.valueOf(System.currentTimeMillis()))
2. 计算i19参数值
在提交登录的HTTP请求(包含i19参数的请求)之前,添加JSR223 PreProcessor,计算当前时间与loadEventEnd的差值,生成i19的值:
// 读取之前记录的时间戳 def loadEnd = Long.parseLong(vars.get("loadEventEnd")) // 计算时间差,得到i19的值 def i19Value = System.currentTimeMillis() - loadEnd // 将结果保存为变量,供请求参数引用 vars.put("i19", String.valueOf(i19Value))
3. 在登录请求中引用变量
把登录请求参数里的i19值替换为${i19},其他参数保持原样:
login:usernameloginfmt:usernametype: 11LoginOptions: 3passwd:passwordps: 2PPSX:PNewUser: 1fspost: 0i21: 0CookieDisclosure: 0IsFidoSupported: 1i2: 1i17: 0i18:__ConvergedLoginPaginatedStrings|1,__OldConvergedLogin_PCore|1,__OldConvergedLogin_PAlt|1,i19:${i19}
三、额外优化提示
如果需要更贴近真实用户行为,可以在「获取登录页面」和「提交登录请求」之间添加Constant Timer,设置1000-3000毫秒的随机延迟,模拟用户在页面的操作停留时间。
四、参考方向
- JMeter官方文档中JSR223元件的变量操作说明
- JMeter时间函数与变量传递的使用指南
内容的提问来源于stack exchange,提问作者kishore
相关产品推荐
相关产品推荐

