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

JMeter负载测试:如何保存Reference Id并每次迭代生成新值?

解决Reference Id提取问题的步骤

1. 定位Reference Id的实际位置

先通过JMeter的查看结果树组件,查看点击checkout按钮后触发的请求(可能是页面跳转请求,也可能是AJAX接口)的响应内容:

  • 检查响应体(HTML):搜索关键词Reference Id或refId,找到它所在的标签或文本片段,比如<input type="hidden" name="referenceId" value="XXXX">
  • 检查响应头:看Location字段是否包含该Id(比如跳转URL里的参数)
  • 检查跳转后的页面URL:看Query参数里有没有类似ref=XXXX的字段

2. 选择合适的提取器配置

情况1:Id在响应体的HTML标签中

优先用CSS Selector Extractor(比正则更稳定,不易受HTML结构小变动影响):

  • 把CSS Selector Extractor添加到checkout请求的子节点
  • 配置参数:
    • Reference Name:referenceId(自定义变量名,后续可直接引用)
    • CSS Selector Expression:比如input[name="referenceId"](根据实际标签属性调整)
    • Attribute:value
    • Match No.:1(取第一个匹配结果)

如果一定要用正则提取器:

  • 正则表达式:name="referenceId" value="(.+?)"(括号包裹要提取的内容,?启用非贪婪匹配避免多取)
  • Template:$1$
  • Match No.:1

情况2:Id在跳转URL的参数中

用正则提取器从响应头的Location字段提取:

  • 正则表达式:Location: .*ref=([^&]+)(假设参数名为ref,[^&]+匹配到下一个参数分隔符&之前的内容)
  • Template:$1$
  • 匹配范围选择Response Headers

3. 确保50个用户的会话独立性

  • 提取器的作用域必须限定在checkout请求(只作用于该请求,不要设为全局)
  • Http Cookie Manager放在测试计划最顶层,保持默认配置(每个线程会维护独立的Cookie会话,不会串用)
  • 测试计划线程数设为50,每个线程会独立执行完整流程,自动提取到各自的Reference Id

4. 验证提取结果

运行脚本后,在查看结果树的Variables标签下,检查每个线程的referenceId变量是否有值,且每个线程的值不同。如果没值,回到第一步重新定位Id的位置,调整提取器的配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 05:37:21