我正在捕获一个字符串作为我的左边界(LB),然后将该LB划分为3个部分,使用strcpy并将值放在char MyString中。当我播放我的脚本时,相关性没有被捕获。
char MyString正在正确捕获值,因为当我用lr_output_message打印它时,它正在显示正确的LB,来自服务器响应值。
这正是我在做的......
char MyString[9999];
// original LB value is LB=DesktopQueuedActivitiesLV:0:CreateDate\" label=\"Create Date\" value=\"",
for (i = 0 ; i < 1 ; i++) {
lr_save_int(i,"MyRow");
strcpy(MyString, "DesktopQueuedActivitiesLV:");
strcat(MyString, lr_eval_string("{MyRow}"));
strcat(MyString, ":CreateDate\\\" label=\\\"Create Date\\\" value=\\\"");
lr_output_message("MyString = %s",MyString);
web_reg_save_param("DateReceived",
lr_eval_string("LB={MyString}"),
"RB=\">",
"Ord=1",
LAST);
}
重播时无法找到DateReceived的值
如果我用实际的LB值替换lr_eval_string("LB={MyString}")
行,那么它正在工作。此外,lr_output_message("MyString = %s",MyString);
正在打印完全相同的原始LB值。
无法弄清楚为什么MyString捕获正确的值但在播放web_reg_save_param("DateReceived",
时无法在实际行中替换。请帮忙。
您正在为循环内部的C参数使用loadrunner参数指定。 loadrunner参数引用在这里都是奇数,因为多次重新运行相同的相关语句,因为只有最后一个在执行时才会产生影响。
lr_output_message("MyString = %s",MyString);
web_reg_save_param("DateReceived",
lr_eval_string("LB={MyString}"),
请注意,lr_output_message()将MyString视为C变量,但web_reg_save_param()的第二个参数将相同的元素视为LoadRunner参数。您需要将C字符串转换为LoadRunner参数,建议使用其他名称(例如LR_MyString)来区分C字符串与LR参数,或者创建一个C参数,其形式为“LB = myleftboundary”
lr_output_message("MyString = %s",MyString);
lr_save_string(MyString, "LR_MyString");
web_reg_save_param("DateReceived",
lr_eval_string("LB={LR_MyString}"),
要么
strcpy(MyString, "LB=DesktopQueuedActivitiesLV:");
strcat(MyString, lr_eval_string("{MyRow}"));
strcat(MyString, ":CreateDate\\\" label=\\\"Create Date\\\" value=\\\"");
lr_output_message("MyString = %s",MyString);
web_reg_save_param("DateReceived",
MyString,
由于在此测试中执行一次的循环,您似乎处于使用DateReceived创建伪数组的路径上,但您可能希望增加循环条目的数量。在这种情况下,您可能会因任何数量的大于1的数组元素而失败,因为您始终将最后一次执行为已满足的相关性。