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

技术问询:能否使用Loadrunner关联特定ID并捕获Draft状态的目标ID

LoadRunner关联状态为Draft的特定ID实现方法

当然可以通过LoadRunner实现这个需求,针对你提供的JSON格式响应数据,以下是两种可行的实现方案:

方案一:正则表达式关联(通用兼容所有LoadRunner版本)

这种方法通过正则匹配结合脚本逻辑筛选,适用于所有版本的LoadRunner:

步骤1:提取所有Id和对应状态

在返回该JSON响应的请求之前,添加两个关联函数,分别提取所有Id和对应的GroupSimStatus:

// 提取所有Id
web_reg_save_param_ex(
    "ParamName=AllIds",
    "LB={\"Id\":",
    "RB,:\"LatestAsAtYear\"",
    "Search=Body",
    "ORD=ALL",
    LAST);

// 提取所有GroupSimStatus值
web_reg_save_param_ex(
    "ParamName=AllStatuses",
    "LB=GroupSimStatus\":\"",
    "RB=\"",
    "Search=Body",
    "ORD=ALL",
    LAST);

步骤2:脚本逻辑筛选Draft状态的Id

在请求执行完成后,通过循环遍历提取到的参数数组,找到状态为Draft对应的Id:

int i;
// 遍历所有状态,匹配Draft并保存对应Id
for(i=1; i<=atoi(lr_eval_string("{AllStatuses_count}")); i++){
    if(strcmp(lr_paramarr_idx("AllStatuses", i), "Draft") == 0){
        lr_save_string(lr_paramarr_idx("AllIds", i), "TargetDraftId");
        lr_output_message("成功捕获Draft状态的Id:%s", lr_eval_string("{TargetDraftId}"));
        break; // 如果有多个Draft,可移除break获取全部
    }
}

方案二:JSON解析函数(LoadRunner 12.5及以上版本适用)

如果你的LoadRunner版本在12.5及以上,支持原生JSON处理函数,这种方法更简洁精准:

在返回JSON响应的请求之前,添加lr_json_get_values函数,通过JSONPath直接筛选目标Id:

lr_json_get_values(
    "JSONPath=$.[?(@.GroupSimStatus=='Draft')].Id",
    "SourceBuffer=Response", // 若响应已保存到参数中,可替换为SourceParam=响应参数名
    "ParamName=DraftId",
    LAST);

其中$.[?(@.GroupSimStatus=='Draft')].Id是JSONPath表达式,作用是遍历响应数组中的每个对象,筛选出GroupSimStatus为Draft的对象,并提取其Id值。

注意事项

  • 所有关联函数必须放在获取目标响应的请求之前,LoadRunner采用预捕获机制,提前设置规则才能捕获到响应数据。
  • 若存在多个Draft状态的对象,正则方法中可移除循环的break语句,JSON方法会自动返回多个结果,可通过{DraftId_count}获取数量,遍历使用lr_paramarr_idx("DraftId", i)调用。
  • 可通过LoadRunner的“关联规则录制”功能辅助验证正则表达式的匹配准确性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 20:57:07