LoadRunner web_reg_save_param、ord=all、paramName_count 问题
LoadRunner web_reg_save_param, ord=all, paramName_count issues
我使用的是 LoadRunner 版本 12.02 - Build 2739
查看旧的但正确的 'guide' 表明我已正确使用语句(第 3 点,页面下方大约 1/3,在代码块内 - the atoi
statement ).
但我仍然无法将 _count 参数转换为 int 变量。
在脚本中,调用之前;
web_reg_save_param(
"ParamName=rotaPeople",
"LB=someText",
"RB=\")",
"Ord=ALL",
LAST);
web调用save_param函数后放在前面,输出日志显示;
Notify: Saving Parameter "ParamName=rotaPeople_count = 21".
在脚本中,调用后,计数已加总;
lr_output_message("RP_C:%d",lr_eval_string("{rotaPeople_count}"));
lr_output_message("RP_C:%s",lr_eval_string("{rotaPeople_count}"));
peoplesCount = atoi(lr_eval_string("{rotaPeople_count}"));
lr_output_message("PC:%d",peoplesCount);
在上述执行后的日志中;
Warning: The string 'rotaPeople_count' with parameter delimiters is not a parameter.
RP_C:110826864
Warning: The string 'rotaPeople_count' with parameter delimiters is not a parameter.
RP_C:{rotaPeople_count}
Warning: The string 'rotaPeople_count' with parameter delimiters is not a parameter.
PC:0
有人有什么想法吗?
注意:警告消息是预期的
注意:解决方法:使用 web_reg_save_param_regex()
并创建了一个正则表达式。在 for 循环中使用返回的 _count 参数有效。保持问题悬而未决,因为原来的问题仍然存在
问题是您使用的 API web_reg_save_param
不支持 ParamName
语法。在此 API 中,第二个参数始终是参数名称,因此正确的用法是:
web_reg_save_param(
"rotaPeople",
"LB=someText",
"RB=\")",
"Ord=ALL",
LAST);
正确的 API 是 web_reg_save_param_ex
,它支持您使用的语法,因此调用应该如下所示:
web_reg_save_param_ex(
"ParamName=rotaPeople",
"LB=someText",
"RB=\")",
"Ord=ALL",
LAST);
那么您的其余代码应该可以正常工作。
我不确定你在做什么,但你可能想看看有点未知的 API lr_paramarr_random
,它会自动从参数数组中提取一个随机值。
这应该对你有帮助
web_reg_save_param(
"rotaPeople",
"LB=someText",
"RB=\")",
"Ord=ALL",
LAST);
lr_output_message("PC:%d",atoi(lr_eval_string("{rotaPeople_count}")));
您正在使用 ord=all,查看 运行 时间数据您想捕获哪个值,如果您想捕获第 10 个值请使用 ord=10,此警告将从输出日志中自动删除.
捕获动态值数组的示例:
Action()
{
int i;
int ncount;
char ParamName[100];
web_set_sockets_option("SSL_VERSION", "TLS");
web_reg_save_param("trackingno","LB=;","RB= (NTN 0430)","search=All","ord=all",LAST);
web_submit_data("barcode.pl",
"Action=http://qtetools.rmtc.fedex.com/barcode/cgi-bin/barcode.pl",
"Method=POST",
"TargetFrame=",
"RecContentType=text/html",
"Referer=http://qtetools.rmtc.fedex.com/barcode/html/barcode.shtml",
"Snapshot=t2.inf",
"Mode=HTML",
ITEMDATA,
"Name=formcode", "Value=0430", ENDITEM,
"Name=count", "Value=10", ENDITEM,
"Name=narrow", "Value=2", ENDITEM,
LAST);
ncount= atoi(lr_eval_string("{trackingno_count}"));
for (i =1;i <= ncount;i++)
{
sprintf(ParamName, "{trackingno_%d}", i);
lr_output_message("Value of %s: %s",ParamName,lr_eval_string(ParamName));
}
return 0;
}
我使用的是 LoadRunner 版本 12.02 - Build 2739
查看旧的但正确的 'guide' 表明我已正确使用语句(第 3 点,页面下方大约 1/3,在代码块内 - the atoi
statement ).
但我仍然无法将 _count 参数转换为 int 变量。
在脚本中,调用之前;
web_reg_save_param(
"ParamName=rotaPeople",
"LB=someText",
"RB=\")",
"Ord=ALL",
LAST);
web调用save_param函数后放在前面,输出日志显示;
Notify: Saving Parameter "ParamName=rotaPeople_count = 21".
在脚本中,调用后,计数已加总;
lr_output_message("RP_C:%d",lr_eval_string("{rotaPeople_count}"));
lr_output_message("RP_C:%s",lr_eval_string("{rotaPeople_count}"));
peoplesCount = atoi(lr_eval_string("{rotaPeople_count}"));
lr_output_message("PC:%d",peoplesCount);
在上述执行后的日志中;
Warning: The string 'rotaPeople_count' with parameter delimiters is not a parameter.
RP_C:110826864
Warning: The string 'rotaPeople_count' with parameter delimiters is not a parameter.
RP_C:{rotaPeople_count}
Warning: The string 'rotaPeople_count' with parameter delimiters is not a parameter.
PC:0
有人有什么想法吗?
注意:警告消息是预期的
注意:解决方法:使用 web_reg_save_param_regex()
并创建了一个正则表达式。在 for 循环中使用返回的 _count 参数有效。保持问题悬而未决,因为原来的问题仍然存在
问题是您使用的 API web_reg_save_param
不支持 ParamName
语法。在此 API 中,第二个参数始终是参数名称,因此正确的用法是:
web_reg_save_param(
"rotaPeople",
"LB=someText",
"RB=\")",
"Ord=ALL",
LAST);
正确的 API 是 web_reg_save_param_ex
,它支持您使用的语法,因此调用应该如下所示:
web_reg_save_param_ex(
"ParamName=rotaPeople",
"LB=someText",
"RB=\")",
"Ord=ALL",
LAST);
那么您的其余代码应该可以正常工作。
我不确定你在做什么,但你可能想看看有点未知的 API lr_paramarr_random
,它会自动从参数数组中提取一个随机值。
这应该对你有帮助
web_reg_save_param(
"rotaPeople",
"LB=someText",
"RB=\")",
"Ord=ALL",
LAST);
lr_output_message("PC:%d",atoi(lr_eval_string("{rotaPeople_count}")));
您正在使用 ord=all,查看 运行 时间数据您想捕获哪个值,如果您想捕获第 10 个值请使用 ord=10,此警告将从输出日志中自动删除.
捕获动态值数组的示例:
Action()
{
int i;
int ncount;
char ParamName[100];
web_set_sockets_option("SSL_VERSION", "TLS");
web_reg_save_param("trackingno","LB=;","RB= (NTN 0430)","search=All","ord=all",LAST);
web_submit_data("barcode.pl",
"Action=http://qtetools.rmtc.fedex.com/barcode/cgi-bin/barcode.pl",
"Method=POST",
"TargetFrame=",
"RecContentType=text/html",
"Referer=http://qtetools.rmtc.fedex.com/barcode/html/barcode.shtml",
"Snapshot=t2.inf",
"Mode=HTML",
ITEMDATA,
"Name=formcode", "Value=0430", ENDITEM,
"Name=count", "Value=10", ENDITEM,
"Name=narrow", "Value=2", ENDITEM,
LAST);
ncount= atoi(lr_eval_string("{trackingno_count}"));
for (i =1;i <= ncount;i++)
{
sprintf(ParamName, "{trackingno_%d}", i);
lr_output_message("Value of %s: %s",ParamName,lr_eval_string(ParamName));
}
return 0;
}