这几天一直在学习
LoadRunner
的
VuGen
编程,今天想对关联函数
web_reg_save_param
做详细的试验和研究:
~f6p q+Z RM0
a6_%_+vF9Ws\w&S0
问题提出:如何对关联的数据进行字符串操作。下面使用了
LoadRunner
自带的订票例子为例,进行了这方面的试验。假设我要关联的数据是由几个字符串组成的。如何使这些字符串组成一个参数,供我后面的函数使用?
51Testing软件测试网.VZR(`D"N
51Testing软件测试网J3p a9o8~ B
解决方法:
使用多个关联函数,对关联参数进行字符串操作,最后把生成的字符串保存成一个参数,供下面调用该参数的函数使用。
m*OO6g_?4zN0
&\MQ0h*T B0
脚本如下:
51Testing软件测试网 LN+tq-vY
Action()
v(Z.Z0v!{d!gc^K;oL0
{
51Testing软件测试网h7GRAY%j
int number1,number2;
51Testing软件测试网Zh8G9{)V/j
char session11[1000];
V&D7`\'r(gka0
char string[1000];
51Testing软件测试网RO"Wc ]
int length;
8VUx3c7XE#c1?0
char *stringtemp;
51Testing软件测试网}R'o~b(Y
//char session22[20];
5g%~#Wg;PG6S0
web_reg_save_param("session1","LB=name=userSession value=","RB=.","Ord=ALL",LAST);
51Testing软件测试网 _cEE!{_h&k RNm
web_reg_save_param("session2","LB=.","RB=<table border=0><tr><td> </td>","Ord=ALL",LAST);
51Testing软件测试网 D SSpU
51Testing软件测试网U$F8AO E`-a
8H(D1cM0x6iGC0
web_url("WebTours",
%?.q(sO K;L9~8S0
"URL=http://127.0.0.1:6080/WebTours/",
51Testing软件测试网vWg!N z4ba
"Resource=0",
51Testing软件测试网Xn.zL4l.M
"RecContentType=text/html",
z\Z5I:[0
"Referer=",
3dH(a#w"X xn6h0
"Snapshot=t1.inf",
51Testing软件测试网VS ^j2D H1JcY
"Mode=HTML",
51Testing软件测试网vPbm)@
LAST);
51Testing软件测试网/uB*gc;]H \
.[,HrX3NUs p0
strcpy(string,"");
J}L%Q.DD!H-mo0
strcpy(string,lr_eval_string("{session1_1}"));
#J+DK)Xt"f0
51Testing软件测试网:]3e+U4A%@9k+[
//strcpy(session1,"");
"X!O{|/zE0
"OCXH&M[/c coxbq0
sprintf(session11,"{session2_1}");
9j1X(d!QA-vHj5s#Q0
strcat(string,".");
c[,F)_ e [6zEJ0
length= strlen(lr_eval_string(session11));
{$s,ea1w0
length=length-2;
51Testing软件测试网Eb:Y].s{5y
:r2s4E&Ek t%\V0
number1=atoi(lr_eval_string("{session1_count}"));
T%]q erx~?&M0
number2=atoi(lr_eval_string("{session2_count}"));
8Kq2d-` O5ANf0
51Testing软件测试网9i~/V^6V E
lr_output_message("%d,%d",number1,number2);
51Testing软件测试网j[ r?]o XCw
51Testing软件测试网&XC5]E nQ
//lr_output_message("%d",length);
51Testing软件测试网O`6oO:rjK
stringtemp=lr_eval_string(session11);
B%zL!i;VQ za0
strncat(string,stringtemp,length);
51Testing软件测试网G2MC-E'\'RD:j#tF
//srcat(string,session11);
#l}!o8BdZ;w0
51Testing软件测试网 M+G8e;_ce-Ad@(^@
lr_save_string(lr_eval_string(string),"session");
*r8L4vsm)Y!|0
g/RxI*n!h/G0t3P W0
lr_output_message("%s",lr_eval_string("{session1_1}"));
51Testing软件测试网;]F8LY%LWT]7L&u
lr_output_message("%s",lr_eval_string("{session2_1}"));
(Y$D,XE^0
51Testing软件测试网MRvaA_x3L
web_submit_data("login.pl",
51Testing软件测试网!h^[ W*M
"Action=http://127.0.0.1:6080/WebTours/login.pl",
51Testing软件测试网}&\)b'NF ]qJA wB
"Method=POST",
"Referer=http://127.0.0.1:6080/WebTours/nav.pl?in=home",
'e)jl [B7i*M0
"RecContentType=text/html",
"Snapshot=t2.inf",
*m:?]Q(iC%fWT0
"Mode=HTML",
51Testing软件测试网@_$?6tF
ITEMDATA,
$i IN{7p%C6} Q b,D0
"Name=userSession", "Value={session}", ENDITEM,
j1p5}&gv0
"Name=username", "Value=jojo", ENDITEM,
gy){#qWIe0
"Name=password", "Value=bean", ENDITEM,
51Testing软件测试网Z4fYHwH%V;S
"Name=JSFormSubmit", "Value=on", ENDITEM,
iF(v8yQ0gGMw0
"Name=login.x", "Value=50", ENDITEM,
)| Uld,E2EX0
"Name=login.y", "Value=10", ENDITEM,
-|5rd I(y,Q6a5ti0
LAST);
y9["OB0?vci0
lr_output_message("%s",lr_eval_string("{session}"));
51Testing软件测试网?l.C] N2z5K
$g ?5M|9i0
return 0;
51Testing软件测试网R&U:aV"DS D8L.i
}
51Testing软件测试网CTXO5g5?:F\
有两个关联的参数,session1
和
session2
,最后生成
session
,被
web_submit_data
函数调用。蓝色部分是需要特别注意的地方。
51Testing软件测试网0d g8_nc
脚本编写调试过程中遇到的问题和解释:
51Testing软件测试网jA X'|8A#d|2V2z }1a
1.
web_reg_save_param
()中如果没有指定
Ord=ALL
的话,默认是取的第一个符合左右边界的值,这样我们使用关联的参数时可以直接使用变量名,如
session1
6X N eC)T;TA0
2.
web_reg_save_param
()中如果指定
Ord=ALL
的话,会生成一个数组,这样想取某个参数的话,需要使用的参数名需要加
_
和数组中的位置
,
如例子中取第一个
session1_1
,
如果这时候仍然用
session1,
是取不到参数的值的
.
9{!DSu/h0
3.
顺序问题
:
对关联参数相关的操作
,
需要放到包含该关联数据的请求函数之后
,
如上紫色部分代码用到关联的参数的语句
,
都需要放到
web_url()
之后
,
否则也不会取到关联的数据
9] bw$Q m"D H t0
4.注意lr_eval_string()函数和lr_save_string()函数的用法.
.
作者:Agoly 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 如果文中有什么错误,欢迎指出。以免更多的人被误导。 |