LoadRunner關聯函數的腳本實例--如何操作關聯參數
這幾天一直在學習LoadRunner的VuGen編程,今天想對關聯函數web_reg_save_param做詳細的試驗和研究:
問題提出:如何對關聯的數據進行字符串操作。下面使用了LoadRunner自帶的訂票例子為例,進行了這方面的試驗。假設我要關聯的數據是由幾個字符串組成的。如何使這些字符串組成一個參數,供我后面的函數使用?
解決方法:使用多個關聯函數,對關聯參數進行字符串操作,最后把生成的字符串保存成一個參數,供下面調用該參數的函數使用。
腳本如下:
Action()
{
int number1,number2;
char session11[1000];
char string[1000];
int length;
char *stringtemp;
//char session22[20];
web_reg_save_param("session1","LB=name=userSession value=","RB=.","Ord=ALL",LAST);
web_reg_save_param("session2","LB=.","RB=<table border=0><tr><td> </td>","Ord=ALL",LAST);
web_url("WebTours",
"URL=http://127.0.0.1:6080/WebTours/",
"Resource=0",
"RecContentType=text/html",
"Referer=",
"Snapshot=t1.inf",
"Mode=HTML",
LAST);
strcpy(string,"");
strcpy(string,lr_eval_string("{session1_1}"));
//strcpy(session1,"");
sprintf(session11,"{session2_1}");
strcat(string,".");
length= strlen(lr_eval_string(session11));
length=length-2;
number1=atoi(lr_eval_string("{session1_count}"));
number2=atoi(lr_eval_string("{session2_count}"));
lr_output_message("%d,%d",number1,number2);
//lr_output_message("%d",length);
stringtemp=lr_eval_string(session11);
strncat(string,stringtemp,length);
//srcat(string,session11);
lr_save_string(lr_eval_string(string),"session");
lr_output_message("%s",lr_eval_string("{session1_1}"));
lr_output_message("%s",lr_eval_string("{session2_1}"));
web_submit_data("login.pl",
"Action=http://127.0.0.1:6080/WebTours/login.pl",
"Method=POST",
"Referer=http://127.0.0.1:6080/WebTours/nav.pl?in=home",
"RecContentType=text/html",
"Snapshot=t2.inf",
"Mode=HTML",
ITEMDATA,
"Name=userSession", "Value={session}", ENDITEM,
"Name=username", "Value=jojo", ENDITEM,
"Name=password", "Value=bean", ENDITEM,
"Name=JSFormSubmit", "Value=on", ENDITEM,
"Name=login.x", "Value=50", ENDITEM,
"Name=login.y", "Value=10", ENDITEM,
LAST);
lr_output_message("%s",lr_eval_string("{session}"));
return 0;
}
有兩個關聯的參數,session1和session2,最后生成session,被web_submit_data函數調用。藍色部分是需要特別注意的地方。
腳本編寫調試過程中遇到的問題和解釋:
1. web_reg_save_param()中如果沒有指定Ord=ALL的話,默認是取的第一個符合左右邊界的值,這樣我們使用關聯的參數時可以直接使用變量名,如session1
2. web_reg_save_param()中如果指定Ord=ALL的話,會生成一個數組,這樣想取某個參數的話,需要使用的參數名需要加_和數組中的位置,如例子中取第一個session1_1,如果這時候仍然用session1,是取不到參數的值的.
3. 順序問題:對關聯參數相關的操作,需要放到包含該關聯數據的請求函數之后,如上紫色部分代碼用到關聯的參數的語句,都需要放到web_url()之后,否則也不會取到關聯的數據
4.注意lr_eval_string()函數和lr_save_string()函數的用法..
