0
点赞
收藏
分享

微信扫一扫

LR脚本完整的调优方法

西曲风 2022-09-20 阅读 161

一、事务和检查点结合使用:

//LR_Auto通过http状态码进行判断,4XX,5XX
//web_reg_find,从响应当中查找特定内容,特定标识,来决定请求是否成功web_reg_find("Savecount=logincount",
"Text=exit",
LAST);if(atoi(lr_eval("{logincount}"))==1){
lr_end_transaction("Login",LR_PASS);
//lr_output_message("登录成功");
}else{ lr_end_transaction("Login",LR_FAIL);
//lr_error_message("登录失败");
}
2)事务状态处理
int status;
if(status == LR_FAIL) {
  lr_error_message("Log on failed");
  return -1;
}else{
  lr_output_message("Login successfully");
  return 0;
}

二、字符乱码

1.运行时的乱码解决方法

LR脚本完整的调优方法_数据

三、手动编写脚本方法

1.new-step-添加Url或Post(submit Data)

LR脚本完整的调优方法_整型_02

四、关联数组

关联数组:通配符##,^
取值Ord=all

int i;
for(i=1;i<lr_paramarr_len("forum");i++){
lr_output_message(lr_paramarr_idx("forum",i));//顺序取值
lr_output_message(lr_paramarr_random("forum"));//随机取值
}lr_save_string(lr_paramarr_random("forum"),"forumid");//保存值付给forumid
---------------------------------------------
char mystring[20]="";for(i=1;i<10;i++){
sprintf(mystring,"{form_%d}",i); //输出到mystring
lr_output_message(lr_eval(mystring));
}

LR脚本完整的调优方法_数据_03

五、在服务器返回值找不到返回值的关联方法

  1)录二份相同的脚本对比脚本中的差异,每一个差异都可能是需要做关联的地方,lr_thik_time部分的差异可以忽略。

【Generation Log】中按Ctrl+F,在查找窗口中粘贴差异部分的内容,点击查找找到后,查看该部分的信息,确认是客户端的请求信息还是服务器回应的信息。
  a.如果出现在****** Request Header For Transaction With Id 3 ******等类似的部分中,那证明是客户端发出的请求,这里是不需要做关联;

****** Response Body For Transaction With Id 13 ******等类似的Response部分的内容,找到这个信息,记录如下内容:

<input type=hidden name=userSession value=106846.044795464ftQfiQDptcQVzzzHDcQHfpDzAfHf>)那么它的左边界就是"<input type=hidden name=userSession value=",而右边界就是">"(边界内容越详细越好)。

  d、记录这个不同数据出现的位置,是Header还是Body。

确认插入关联的位置:

【Extended log】中的选项全部勾选上。

【Replay Log】,按CTRL+F,粘帖上<input type=hidden name=userSession value=这个的位置,双击此处,在此脚本中的位置之前就是需要插入关联函数的地方。

Action.c(4): <input type=hidden name=userSession 
value=106853.155690563ftQzcfQpVQfiDDDDDcQHHpfffVHf>\n

  5、插入关联函数:

右击上一步骤中,搜索到的脚本位置,在其上方的空白处右击,【插入】->【新建步骤】,弹出添加步骤输入框,输入“web_reg_save_param”,点击确定,弹出将数据保存到参数中输入框,在参数名中输入“UserSession”,左边界“<input type=hidden name=userSession value=”,右边界“>”,勾选搜索范围,选择“正文”,然后点击确定。
成功插入后应看到如下的正确函数:

web_reg_save_param("UserSession",
"LB=input
type=hidden name=userSession
value=",
"RB=>",
"Search=Body",
LAST);


  6、将脚本中有用到关联的数据,用参数代替:

如发出请求的参数如下,那么将原来服务器返回的动态值使用{ UserSession } 来替换:

web_submit_data("login.pl",
"Action=http://127.0.0.1:1080/WebTours/login.pl",
"Method=POST",
"RecContentType=text/html",
"Referer=http://127.0.0.1:1080/WebTours/nav.pl?in=home",
"Snapshot=t2.inf",
"Mode=HTML",
ITEMDATA,
"Name=userSession",
"Value={UserSession}", ENDITEM,
"Name=username", "Value=jojo",
ENDITEM,
"Name=password", "Value=bean", ENDITEM,
"Name=JSFormSubmit",
"Value=on", ENDITEM,
"Name=login.x", "Value=48", ENDITEM,
"Name=login.y",
"Value=4", ENDITEM,
LAST);

7、最后验证关联的正确性:
  回放脚本,验证关联的正确性。

 ---------------------------------------------C语言字符数字之间的转换-------------------------------------

字符转换为数字:

#include<stdlib.h>

atoi();将字符转换为整型   例:char ch1;int i=atoi(ch1);

atol();将字符转化为长整型  例:char ch2;long l=atol(ch2);

atof();将字符转化为浮点型  例:char ch3;float f=atof(ch3);

strtod(); 将字符串转化为双精度类型  例:string str1;double d=strtod(str1);

strtol(); 将字符串转化为长整型 例:string str2; long int li=strtol(str2);

strtoul(); 将字符串转化为无符长整型 例:sting str3; unsinged long int uli=str(str3);

数字转换为字符:

itoa();  将整型转化为字符
例:int i; char ch1; itoa(i,ch1,radix); 
radix为基数:想要把ch1转化为十进制则为10,八进制则为8,十六进制则为16

ltoa(); 将长整型转化为字符 例: long int i li; char ch2; ltoa(li,ch2,radix);

ultoa(); 将无符长整型转化为字符  例:unsiged long int uli; char ch3; ultoa(uli,ch3,radix);

字符与字符的转化:

#include<ctype.h>

tolower(); 将一个大写字母转化为小写字母
例:char upper=C; char lower=tolower(upper);//得lower=c

toupper();  将一一个小写字母转化为大写字母
例:char  lower=c; char upper=toupper(lower);//得upper=C




举报

相关推荐

0 条评论