总括:
VUG脚本录制——webtours案例:登录、订票、选择票、支付、查看、退出一系列事务,调试增强脚本。
涉及技术及知识点:
1)脚本常规设置之——订票正常循环5次、扩展日志查看、关闭日志查看ouput中打印提示、脚本乱码设置等;
2)脚本增强之——关联函数:登录、选择票务、支付判断订票是否成功,3处分别写关联函数,调试运行脚本,成功。(注意:动态值从response中获取确认无误);
3)脚本增强之——参数化:订多张票时,设置每张票不同出发和到达城市,调试运行脚本,成功。(注意:选择系统自带的城市,否则关联不到城市,脚本回放不成功);
4)脚本增强之——登录/退出只执行一次,设置,调试运行脚本,成功;
5)脚本增强之——关联函数中增加顺序选择,调试运行脚本,成功。(ord,票务顺序不对,未增加ord时所有票都是一张);
6)脚本增强之——判断订票是否成功(if/else语句),打印订票成功、失败的提示语,调试回放脚本,成功;
7)脚本增强之——在init和end中打印提示语,便于在output中查看提示是否设置成功。
上述内容源码展示:
一、vuser_init部分:
vuser_init()
{
//name="userSession" value="124405.995382746zDQQVDDpDiHfDiDQtpiAADcf"/>
web_reg_save_param("seesion",
"LB=name=\"userSession\" value=\"",
"RB=\"/>",
LAST);
web_url("index.htm",
"URL=http://127.0.0.1:1080/WebTours/index.htm",
"TargetFrame=",
"Resource=0",
"RecContentType=text/html",
"Referer=",
"Snapshot=t1.inf",
"Mode=HTML",
LAST);
lr_think_time(34);
lr_start_transaction("1_login");
web_submit_data("login.pl",
"Action=http://127.0.0.1:1080/cgi-bin/login.pl",
"Method=POST",
"TargetFrame=body",
"RecContentType=text/html",
"Referer=http://127.0.0.1:1080/cgi-bin/nav.pl?in=home",
"Snapshot=t2.inf",
"Mode=HTML",
ITEMDATA,
"Name=userSession", "Value={seesion}", ENDITEM,
"Name=username", "Value=jojo", ENDITEM,
"Name=password", "Value=bean", ENDITEM,
"Name=JSFormSubmit", "Value=off", ENDITEM,
"Name=login.x", "Value=0", ENDITEM,
"Name=login.y", "Value=0", ENDITEM,
LAST);
lr_end_transaction("1_login",LR_AUTO);
lr_output_message("这里是init");
return 0;
}
二、Action部分:
Action()
{
lr_think_time(6);
web_url("Search Flights Button",
"URL=http://127.0.0.1:1080/cgi-bin/welcome.pl?page=search",
"TargetFrame=body",
"Resource=0",
"RecContentType=text/html",
"Referer=http://127.0.0.1:1080/cgi-bin/nav.pl?page=menu&in=home",
"Snapshot=t3.inf",
"Mode=HTML",
LAST);
lr_think_time(36);
lr_start_transaction("2_findflight");
//name="outboundFlight" value="242;193;09/02/2018">
web_reg_save_param("fight",
"LB=name=\"outboundFlight\" value=\"",
"RB=\">",
"Ord=3",
LAST);
web_submit_data("reservations.pl",
"Action=http://127.0.0.1:1080/cgi-bin/reservations.pl",
"Method=POST",
"TargetFrame=",
"RecContentType=text/html",
"Referer=http://127.0.0.1:1080/cgi-bin/reservations.pl?page=welcome",
"Snapshot=t4.inf",
"Mode=HTML",
ITEMDATA,
"Name=advanceDiscount", "Value=0", ENDITEM,
"Name=depart", "Value={departcity}", ENDITEM,
"Name=departDate", "Value=09/02/2018", ENDITEM,
"Name=arrive", "Value={arrivecity}", ENDITEM,
"Name=returnDate", "Value=09/03/2018", ENDITEM,
"Name=numPassengers", "Value=1", ENDITEM,
"Name=seatPref", "Value=Window", ENDITEM,
"Name=seatType", "Value=First", ENDITEM,
"Name=.cgifields", "Value=roundtrip", ENDITEM,
"Name=.cgifields", "Value=seatType", ENDITEM,
"Name=.cgifields", "Value=seatPref", ENDITEM,
"Name=findFlights.x", "Value=42", ENDITEM,
"Name=findFlights.y", "Value=7", ENDITEM,
LAST);
lr_end_transaction("2_findflight",LR_AUTO);
lr_think_time(24);
lr_start_transaction("3_selectflight");
web_submit_data("reservations.pl_2",
"Action=http://127.0.0.1:1080/cgi-bin/reservations.pl",
"Method=POST",
"TargetFrame=",
"RecContentType=text/html",
"Referer=http://127.0.0.1:1080/cgi-bin/reservations.pl",
"Snapshot=t5.inf",
"Mode=HTML",
ITEMDATA,
"Name=outboundFlight", "Value={fight}", ENDITEM,
"Name=numPassengers", "Value=1", ENDITEM,
"Name=advanceDiscount", "Value=0", ENDITEM,
"Name=seatType", "Value=First", ENDITEM,
"Name=seatPref", "Value=Window", ENDITEM,
"Name=reserveFlights.x", "Value=51", ENDITEM,
"Name=reserveFlights.y", "Value=14", ENDITEM,
LAST);
lr_end_transaction("3_selectflight",LR_AUTO);
lr_think_time(40);
lr_start_transaction("4_payment");
//<small><B>Thank you for booking through Web Tours.</B></small>
web_reg_save_param("message",
"LB=<small><B>",
"RB=</B></small>",
LAST);
web_submit_data("reservations.pl_3",
"Action=http://127.0.0.1:1080/cgi-bin/reservations.pl",
"Method=POST",
"TargetFrame=",
"RecContentType=text/html",
"Referer=http://127.0.0.1:1080/cgi-bin/reservations.pl",
"Snapshot=t6.inf",
"Mode=HTML",
ITEMDATA,
"Name=firstName", "Value=Jojo", ENDITEM,
"Name=lastName", "Value=Bean", ENDITEM,
"Name=address1", "Value=beijing", ENDITEM,
"Name=address2", "Value=shanghai", ENDITEM,
"Name=pass1", "Value=Jojo Bean", ENDITEM,
"Name=creditCard", "Value=123456789", ENDITEM,
"Name=expDate", "Value=12345", ENDITEM,
"Name=oldCCOption", "Value=", ENDITEM,
"Name=numPassengers", "Value=1", ENDITEM,
"Name=seatType", "Value=First", ENDITEM,
"Name=seatPref", "Value=Window", ENDITEM,
"Name=outboundFlight", "Value={fight}", ENDITEM,
"Name=advanceDiscount", "Value=0", ENDITEM,
"Name=returnFlight", "Value=", ENDITEM,
"Name=JSFormSubmit", "Value=off", ENDITEM,
"Name=.cgifields", "Value=saveCC", ENDITEM,
"Name=buyFlights.x", "Value=58", ENDITEM,
"Name=buyFlights.y", "Value=10", ENDITEM,
LAST);
if(strstr(lr_eval_string("{message}"),"Thank you for booking through Web Tours.")!=NULL)
{
lr_end_transaction("4_payment",LR_PASS);
lr_output_message("订票成功,departcity:%s,arrivecity:%s",
lr_eval_string("{departcity}"),
lr_eval_string("{arrivecity}"));
}
else
{
lr_end_transaction("4_payment",LR_FAIL);
lr_output_message("订票失败");
}
lr_think_time(9);
#手动插入事务
lr_start_transaction("5_WatchFlight");
web_url("Itinerary Button",
"URL=http://127.0.0.1:1080/cgi-bin/welcome.pl?page=itinerary",
"TargetFrame=body",
"Resource=0",
"RecContentType=text/html",
"Referer=http://127.0.0.1:1080/cgi-bin/nav.pl?page=menu&in=flights",
"Snapshot=t7.inf",
"Mode=HTML",
LAST);
lr_end_transaction("5_WatchFlight", LR_AUTO);
lr_think_time(34);
return 0;
}
三、vuser_end部分:
vuser_end()
{
lr_start_transaction("6_sign off");
web_url("SignOff Button",
"URL=http://127.0.0.1:1080/cgi-bin/welcome.pl?signOff=1",
"TargetFrame=body",
"Resource=0",
"RecContentType=text/html",
"Referer=http://127.0.0.1:1080/cgi-bin/nav.pl?page=menu&in=itinerary",
"Snapshot=t8.inf",
"Mode=HTML",
LAST);
lr_end_transaction("6_sign off",LR_AUTO);
lr_output_message("这里是end");
return 0;
}