LoadRunner中关联特定Draft状态CustomerSimId(动态左边界)的方法咨询
LoadRunner关联特定Draft状态CustomerSimId的解决方法
针对你需要关联状态为Draft、CustomerSimId值为2645190的场景,之前用SaveLen=-8无效是因为左边界未精准定位到目标字段的前置内容,动态冗长的结构导致固定长度截取失效,以下是两种可行方案:
方案一:使用JSON专用关联函数(推荐)
LoadRunner支持通过web_reg_save_param_json直接解析JSON响应,利用JSONPath精准过滤目标数据,无需依赖复杂边界:
web_reg_save_param_json( "ParamName=TargetCustomerSimId", "Query=[$..[?(@.Status=='Draft' && @.CustomerSimId==2645190)].CustomerSimId]", "SelectAll=NO", LAST);
- 该JSONPath表达式会遍历所有JSON对象,筛选出
Status为Draft且CustomerSimId等于2645190的条目,直接提取对应的CustomerSimId值 SelectAll=NO表示只取第一个匹配结果(这里目标唯一,无需多选)
方案二:使用正则表达式关联(适配旧版本LoadRunner)
如果你的LoadRunner版本不支持JSON解析函数,可以构造精准的正则边界来定位目标字段:
web_reg_save_param_ex( "ParamName=TargetCustomerSimId", "LB=\"Status\":\"Draft\"[^\}]*\"CustomerSimId\":", "RB=,", "Ordinal=2", // 根据示例数据,目标是第2个Draft状态的对象,需根据实际返回调整序号 "SaveLen=-1", LAST);
- 左边界
"Status\":\"Draft\"[^\}]*\"CustomerSimId\":"表示匹配到"Status":"Draft"后,跳过所有非}的字符,直到找到目标"CustomerSimId":字段 RB=,以逗号作为右边界,SaveLen=-1自动截取左右边界之间的内容- 若存在多个Draft条目,通过
Ordinal指定目标对应的序号(示例中目标是第2个Draft对象)
内容的提问来源于stack exchange,提问作者afirdaus04
相关产品推荐
相关产品推荐

