You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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: username
  • loginfmt: username
  • type: 11
  • LoginOptions: 3
  • passwd: password
  • ps: 2
  • PPSX: P
  • NewUser: 1
  • fspost: 0
  • i21: 0
  • CookieDisclosure: 0
  • IsFidoSupported: 1
  • i2: 1
  • i17: 0
  • i18: __ConvergedLoginPaginatedStrings|1,__OldConvergedLogin_PCore|1,__OldConvergedLogin_PAlt|1,
  • i19: ${i19}

三、额外优化提示

如果需要更贴近真实用户行为,可以在「获取登录页面」和「提交登录请求」之间添加Constant Timer,设置1000-3000毫秒的随机延迟,模拟用户在页面的操作停留时间。

四、参考方向

  • JMeter官方文档中JSR223元件的变量操作说明
  • JMeter时间函数与变量传递的使用指南

内容的提问来源于stack exchange,提问作者kishore

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 14:45:33