如何在LoadRunner中捕获迭代时位置动态变化的Performance、tester、role
在LoadRunner中捕获顺序随机的三个动态值
针对三个目标值(Performance、tester、role)排列顺序随机的场景,有两种可靠的捕获方案:
方法一:先捕获完整值列表再拆分
先一次性捕获Values :和??之间的所有内容,再通过字符串拆分提取单个值:
- 用
web_reg_save_param_ex捕获完整值串:
web_reg_save_param_ex( "ParamName=AllValues", "LB=Values :", "RB=??", "Search=Body", LAST);
- 用
strtok函数拆分逗号分隔的结果,存入独立参数:
char *token; // 提取第一个值 token = strtok(lr_eval_string("{AllValues}"), ","); lr_save_string(token, "CapturedPerformance"); // 提取第二个值 token = strtok(NULL, ","); lr_save_string(token, "CapturedTester"); // 提取第三个值 token = strtok(NULL, ","); lr_save_string(token, "CapturedRole");
这种方式不受值排列顺序影响,最终三个值会被分别存入指定参数,后续脚本直接调用即可。
方法二:用正则表达式单独匹配每个值
针对每个目标值编写独立关联规则,通过正则忽略顺序直接定位目标:
// 捕获Performance(兼容大小写场景) web_reg_save_param_ex( "ParamName=CapturedPerformance", "LB=Values :", "RB=??", "RegExp=.*?(Performance|performance).*?", "Search=Body", LAST); // 捕获tester(兼容大小写场景) web_reg_save_param_ex( "ParamName=CapturedTester", "LB=Values :", "RB=??", "RegExp=.*?(tester|Tester).*?", "Search=Body", LAST); // 捕获role(兼容大小写场景) web_reg_save_param_ex( "ParamName=CapturedRole", "LB=Values :", "RB=??", "RegExp=.*?(role|Role).*?", "Search=Body", LAST);
利用.*?非贪婪匹配跳过无关内容,直接定位目标值,不管它在列表中的位置。如果返回值大小写固定,可简化正则表达式。
关键注意事项
- 所有
web_reg_save_param_ex必须放在触发返回值的HTTP请求之前,否则无法生效。 - 如果值之间的分隔符不是逗号,需同步调整拆分逻辑或正则中的分隔符号。
内容的提问来源于stack exchange,提问作者Nilesh Bhapkar
相关产品推荐
相关产品推荐

