LoadRunner关联函数的脚本实例--如何操作关联参数


​这几天一直在学习​​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>&nbsp;</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

出处:javascript:void(0)

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

如果文中有什么错误,欢迎指出。以免更多的人被误导。