我正在捕获一个字符串作为我的左边界(LB),然后使用strcpy将LB分为3个部分,并将值放入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的值
如果将行lr_eval_string("LB={MyString}")
替换为实际的LB值,则它可以正常工作。另外,lr_output_message("MyString = %s",MyString);
正在打印完全相同的原始LB值。
无法弄清楚MyString为什么捕获正确的值,但是在播放web_reg_save_param("DateReceived",
时无法在实际行中替换。请帮忙。
答案 0 :(得分:0)
您正在对循环内部的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参数,或创建形式为“ LB = myleftboundary”
的C参数。lr_output_message("MyString = %s",MyString);
lr_save_string(MyString, "LR_MyString");
web_reg_save_param("DateReceived",
lr_eval_string("LB={LR_MyString}"),
OR
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的数组元素都可能失败,因为您将始终以最后一次执行为已完成的关联。