第1讲:LR 自带订票系统完整脚本(纯脚本)
来源:互联网 发布:盗版游戏 知乎 编辑:程序博客网 时间:2024/05/22 04:48
前两周将LR在手机应用测试实现作了简单介绍,相信各位对如何使用有一定的了解,当然仅仅是包括了最基本如何去实现问题,今天也不例外,因为注意到LR自带的订票系统(11.5的,之前的订票系统可能有些不一样)是不少像我一样的初学者拿来做实验的,网上有部分脚本,但我看了下不是很完整,所以就在此补充了。欢迎各位大侠拍砖。
第一部分:
vuser_init
<span style="font-family: 'Microsoft YaHei',微软雅黑,SimHei,tahoma,arial,helvetica,sans-serif; font-size: 12px;">HomePage(){ web_reg_save_param("UserSession", "LB=<input type=hidden name=userSession value=", "RB=>", "ORD=ALL", LAST); web_url("webtours", "URL=http://127.0.0.1:1080/WebTours/", "TargetFrame=", "Resource=0", "RecContentType=text/html", "Referer=", "Snapshot=t1.inf", "Mode=HTML", LAST); lr_think_time(26); lr_paramarr_len("UserSession"); return 0;}</span>
第三部分:
SubmitLogin
<span style="font-family: 'Microsoft YaHei',微软雅黑,SimHei,tahoma,arial,helvetica,sans-serif; font-size: 12px;">SubmitLogin(){ web_reg_find("Search=Body", "Text=Welcome, <b>karsen</b>, to the Web Tours reservation pages.", LAST); web_submit_data("login.pl", "Action=http://127.0.0.1:1080/cgi-bin/login.pl", "Method=POST", "TargetFrame=", "RecContentType=text/html", "Referer=http://127.0.0.1:1080/webtours/nav.pl?in=home", "Mode=HTML", ITEMDATA, "Name=userSession", "Value={UserSession_3}", ENDITEM, "Name=username", "Value=karsen", ENDITEM, "Name=password", "Value=123456", ENDITEM, "Name=JSFormSubmit", "Value=on", ENDITEM, LAST); return 0;}</span>
第四部分:
Flights
<span style="font-family: 'Microsoft YaHei',微软雅黑,SimHei,tahoma,arial,helvetica,sans-serif; font-size: 12px;">Flights(){ web_reg_save_param("FlightInfo", "LB=\">", "RB=</option>", "Ord=ALL", LAST); web_reg_find("Search=Body", "Text=Find Flight", LAST); web_image("Search Flights Button", "Alt=Search Flights Button", "Snapshot=t16.inf", EXTRARES, "Url=../WebTours/classes/FormDateUpdate.class", "Referer=", ENDITEM, "Url=../WebTours/classes/CalSelect.class", "Referer=", ENDITEM, "Url=../WebTours/classes/Calendar.class", "Referer=", ENDITEM, LAST);return 0;}</span>
第五部分
FlightInfo
<span style="font-family: 'Microsoft YaHei',微软雅黑,SimHei,tahoma,arial,helvetica,sans-serif; font-size: 12px;">FlightInfo(){ char DepartCity[20]={NULL}, ArriveCity[20]={NULL}, FlightLines[20]={NULL}, FlightParam[20]={NULL}; int FlightNumbers,FlightIndex; srand((unsigned)time(NULL)); FlightNumbers =lr_paramarr_len("FlightInfo")/2; FlightIndex = rand()%FlightNumbers + 1; sprintf(FlightParam,"{FlightInfo_%d}",FlightIndex); lr_output_message ("FlightIndex is %d",FlightIndex ); sprintf(DepartCity,"%s",lr_eval_string (FlightParam)); sprintf(ArriveCity,"%s",lr_eval_string (FlightParam)); lr_save_string(DepartCity,"DepartCity"); while (strcmp(&DepartCity,&ArriveCity)==0) { FlightIndex = rand()%FlightNumbers + 1; sprintf(FlightParam,"{FlightInfo_%d}",FlightIndex); sprintf(ArriveCity,"%s",lr_eval_string (FlightParam)); lr_save_string(ArriveCity,"ArriveCity"); } lr_output_message("The Depart city is:%s",lr_eval_string("{DepartCity}")); lr_output_message ("The Arrive city is :%s",lr_eval_string("{ArriveCity}")); return 0;}</span>
第六部分
SubmitFlight
<span style="font-family: 'Microsoft YaHei',微软雅黑,SimHei,tahoma,arial,helvetica,sans-serif; font-size: 12px;"> int NumPassengers=0;SubmitFlight(){ char SubmitFlightCustomerRequest[500]; int i=1; lr_think_time(27);/* web_submit_data("reservations.pl", "Action=http://127.0.0.1:1080/webtours/reservations.pl", "Method=POST", "TargetFrame=", "RecContentType=text/html", "Referer=http://127.0.0.1:1080/webtours/reservations.pl?page=welcome", "Snapshot=t4.inf", "Mode=HTML", ITEMDATA, "Name=advanceDiscount", "Value=1", ENDITEM, "Name=depart", "Value={DepartCity}", ENDITEM, // you can use departCity directly if you set the string format. pay attention to the "" "Name=departDate", "Value={DepartDate}", ENDITEM, "Name=arrive", "Value={ArriveCity}", ENDITEM, "Name=returnDate", "Value={ReturnDate}", ENDITEM, "Name=numPassengers", "Value=1", ENDITEM, "Name=roundtrip","Value=on", ENDITEM, "Name=seatPref", "Value={SeatPref}", ENDITEM, "Name=seatType", "Value={SeatType}", ENDITEM, "Name=.cgifields", "Value=roundtrip", ENDITEM, "Name=.cgifields", "Value=seatType", ENDITEM, "Name=.cgifields", "Value=seatPref", ENDITEM, "Name=findFlights.x", "Value=38", ENDITEM, "Name=findFlights.y", "Value=8", ENDITEM, LAST);*/ srand( (unsigned)time(NULL) ); NumPassengers=rand()%9+1; i=1; lr_output_message("NumPassengers is :%d", NumPassengers); lr_output_message("Value i is :%d", i); if(i==0) { sprintf( SubmitFlightCustomerRequest, "Body=advanceDiscount=1&depart=%s&departDate=%s&arrive=%s&returnDate=%s&numPassengers=%d&roundtrip=on&seatPref=%s&seatType=%s&.cgifields=roundtrip&.cgifields=seatType&.cgifields=seatPref&findFlights.x=38&findFlights.y=8", lr_eval_string("{DepartCity}"), lr_eval_string("{DepartDate}"), lr_eval_string("{ArriveCity}"), lr_eval_string("{ReturnDate}"), NumPassengers, lr_eval_string("{SeatPref}"), lr_eval_string("{SeatType}") ); } else { sprintf( SubmitFlightCustomerRequest, "Body=advanceDiscount=1&depart=%s&departDate=%s&arrive=%s&returnDate=%s&numPassengers=%d&seatPref=%s&seatType=%s&.cgifields=roundtrip&.cgifields=seatType&.cgifields=seatPref&findFlights.x=38&findFlights.y=8", lr_eval_string("{DepartCity}"), lr_eval_string("{DepartDate}"), lr_eval_string("{ArriveCity}"), lr_eval_string("{ReturnDate}"), NumPassengers, lr_eval_string("{SeatPref}"), lr_eval_string("{SeatType}") ); } lr_output_message("the SubmitFlightCustomerRequest is :%s", SubmitFlightCustomerRequest); web_reg_save_param_ex( "ParamName=OutBoundFlightParam", "LB=<input type = radio name=outboundFlight value=", "RB/RE= checked|>", "Ordinal=all", SEARCH_FILTERS, LAST); web_reg_save_param_ex( "ParamName=ReturnFlightParam", "LB=<input type = radio name=returnFlight value=", "RB/RE= checked|>", "NotFound=warning", "Ordinal=all", SEARCH_FILTERS, LAST);// attribution "Notfound=warning" to export information when params not found.//web_reg_save_param_ex is not only just find params from the server responding,it will find match items from LR functions, such as lr_save_string/*web_reg_save_param ("OutBoundFlight","LB=<input type = radio name=outboundFlight value=","RB=>","ORD=ALL","Savelen=17",LAST); web_reg_save_param ("ReturnFlight","LB=<input type = radio name=returnFlight value=","RB=>","ORD=ALL","Savelen=17",LAST); you'd better use flight date as the RB , it would save your effot ,this function can't be used here */ web_reg_find("Search=Body", "TextPfx=Flight departing from", "TextSfx={DepartDate}", LAST); web_custom_request("reservations.pl", "URL=http://127.0.0.1:1080/cgi-bin/reservations.pl", "Method=POST", "Resource=0", "RecContentType=text/html", "Referer=", "Snapshot=t4.inf", SubmitFlightCustomerRequest, LAST);return 0;}</span>
第七部分
SelectFlight
<span style="font-family: 'Microsoft YaHei',微软雅黑,SimHei,tahoma,arial,helvetica,sans-serif; font-size: 12px;">int ReturnFlightNum=0;SelectFlight(){ char OutBoundFlight[50]={NULL}, ReturnParam[50]={NULL}, SubmitSelectFlightData[500]={NULL}; lr_think_time(17); srand( (unsigned)time(NULL) ); sprintf( OutBoundFlight,"{OutBoundFlightParam_%d}",rand() % 4 + 1 ); lr_save_string( lr_eval_string(OutBoundFlight),"OutBoundFlight" ); lr_output_message("Selected flight is :%s", lr_eval_string("{OutBoundFlight}")); lr_output_message("Num of OutBoundFlight is :%d", lr_paramarr_len("OutBoundFlightParam")); ReturnFlightNum=lr_paramarr_len( "ReturnFlightParam" ); if(ReturnFlightNum!=0) { sprintf( ReturnParam,"{ReturnFlightParam_%d}",rand() % 4 + 1); lr_save_string( lr_eval_string(ReturnParam),"ReturnFlight" ); lr_output_message("%s", lr_eval_string("{ReturnFlight}")); sprintf( SubmitSelectFlightData, "Body=outboundFlight=%s&returnFlight=%s&numPassengers=%d&advanceDiscount=1&seatType=%s&seatPref=%s&reserveFlights.x=32&reserveFlights.y=8", lr_eval_string("{OutBoundFlight}"), lr_eval_string("{ReturnFlight}"), NumPassengers, lr_eval_string("{SeatType}"), lr_eval_string("{SeatPref}") ); } else { lr_save_string( lr_eval_string(ReturnParam),"ReturnFlight" ); lr_output_message("%s", lr_eval_string("{ReturnFlight}")); sprintf( SubmitSelectFlightData, "Body=outboundFlight=%s&numPassengers=%d&advanceDiscount=1&seatType=%s&seatPref=%s&reserveFlights.x=32&reserveFlights.y=8", lr_eval_string("{OutBoundFlight}"), NumPassengers, lr_eval_string("{SeatType}"), lr_eval_string("{SeatPref}") ); } lr_output_message("SubmitSelectFlightData is :%s", lr_eval_string(SubmitSelectFlightData)); web_reg_find("Search=Body", "Text=Payment Details", LAST); web_custom_request("reservations.pl_2", "URL=http://127.0.0.1:1080/cgi-bin/reservations.pl", "Method=POST", "Resource=0", "RecContentType=text/html", "Referer=", SubmitSelectFlightData, "Snapshot=t5.inf", LAST);/* web_submit_data("reservations.pl_2", "Action=http://127.0.0.1:1080/webtours/reservations.pl", "Method=POST", "TargetFrame=", "RecContentType=text/html", "Referer=http://127.0.0.1:1080/webtours/reservations.pl", "Snapshot=t5.inf", "Mode=HTML", ITEMDATA, "Name=outboundFlight", "Value={OutBoundFlight}", ENDITEM, "Name=returnFlight", "Value={Return}", ENDITEM, "Name=numPassengers", "Value=1", ENDITEM, "Name=advanceDiscount", "Value=1", ENDITEM, "Name=seatType", "Value={SeatType}", ENDITEM, "Name=seatPref", "Value={SeatPref}", ENDITEM, "Name=reserveFlights.x", "Value=32", ENDITEM, "Name=reserveFlights.y", "Value=8", ENDITEM, LAST);*/return 0;}</span>
第八部分
SubmitPatmentDetails
<span style="font-family: 'Microsoft YaHei',微软雅黑,SimHei,tahoma,arial,helvetica,sans-serif; font-size: 12px;">SubmitPamentDetails(){ char SubmitPamentDetails[800]={NULL}, SubmitPamentDetails1[500]={NULL}, SubmitPamentDetails2[200]={NULL}; int m=1; lr_think_time(24); lr_save_string( lr_eval_string(RandValue()), "FirstName" ); lr_save_string( lr_eval_string(RandValue()), "LastName" ); lr_save_string( lr_eval_string(RandValue()), "StreetAddress" ); lr_save_string( lr_eval_string(RandValue()), "City" ); lr_save_string( lr_eval_string(RandValue()), "Address1" ); lr_output_message("the first name is :%s", lr_eval_string("{FirstName}")); lr_output_message("the last name is :%s", lr_eval_string("{LastName}")); lr_output_message("the street is :%s", lr_eval_string("{StreetAddress}")); lr_output_message("the city is :%s", lr_eval_string("{City}")); lr_output_message("the first passenger's address is :%s", lr_eval_string("{Address1}")); web_reg_find("Search=Body", "TextPfx={FirstName}{LastName}", "TextSfx=Flight Invoice", LAST); if(ReturnFlightNum==0) { 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={FirstName}", ENDITEM, "Name=lastName", "Value={LastName}", ENDITEM, "Name=address1", "Value={StreetAddress}", ENDITEM, "Name=address2", "Value={City}", ENDITEM, "Name=pass1", "Value= {Address1}", ENDITEM, "Name=creditCard", "Value={CreditCard}", ENDITEM, "Name=expDate", "Value={ExpDate}", ENDITEM, "Name=oldCCOption", "Value=", ENDITEM, "Name=numPassengers", "Value=1", ENDITEM, "Name=seatType", "Value={SeatType}", ENDITEM, "Name=seatPref", "Value={SeatPref}", ENDITEM, "Name=returnFlight", "Value=", ENDITEM, "Name=advanceDiscount", "Value=1", ENDITEM, "Name=JSFormSubmit", "Value=on", ENDITEM, "Name=.cgifields", "Value=saveCC", ENDITEM, "Name=buyFlights.x", "Value=46", ENDITEM, "Name=buyFlights.y", "Value=7", ENDITEM, LAST); }else{ sprintf( SubmitPamentDetails, "Body=firstName=%s&lastName=%s&address1=%s&address2=%s", lr_eval_string("{FirstName}"), lr_eval_string("{LastName}"), lr_eval_string("{StreetAddress}"), lr_eval_string("{City}"), lr_eval_string("{Address1}") ); sprintf( SubmitPamentDetails1, "&creditCard=%s&expDate=%s&oldCCOption=&numPassengers=%d&seatType=%s&seatPref=%s&outboundFlight=%s&advanceDiscount=1&returnFlight=%s&JSFormSubmit=on&.cgifields=saveCC&buyFlights.x=24&buyFlights.y=7", lr_eval_string("{CreditCard}"), lr_eval_string("{ExpDate}"), NumPassengers, lr_eval_string("{SeatType}"), lr_eval_string("{SeatPref}"), lr_eval_string("{OutBoundFlight}"), lr_eval_string("{ReturnFlight}") ); srand( (unsigned)time(NULL) ); for(m;m<=NumPassengers;m++) { sprintf( SubmitPamentDetails2, "&pass%d=%s", m, lr_eval_string(RandValue()) ); strcat( SubmitPamentDetails, SubmitPamentDetails2 ); lr_output_message("SubmitPamentDetails is %s", lr_eval_string(SubmitPamentDetails)); } strcat( SubmitPamentDetails, SubmitPamentDetails1 ); lr_output_message("SubmitPamentDetails is %s", lr_eval_string(SubmitPamentDetails)); web_custom_request("reservations.pl_3", "URL=http://127.0.0.1:1080/webtours/reservations.pl", "Method=POST", "Resource=0", "RecContentType=text/html", "Referer=", "Snapshot=t6.inf", SubmitPamentDetails, LAST); } return 0;}</span>
第九部分
Invoice
<span style="font-family: 'Microsoft YaHei',微软雅黑,SimHei,tahoma,arial,helvetica,sans-serif; font-size: 12px;">Invoice(){ lr_think_time(11); web_submit_form("reservations.pl_4", "Snapshot=t38.inf", ITEMDATA, "Name=Book Another.x", "Value=19", ENDITEM, "Name=Book Another.y", "Value=10", ENDITEM, EXTRARES, "Url=../WebTours/classes/Calendar.class", "Referer=", ENDITEM, LAST); return 0;}</span>
第十部分
CancleFlights
<span style="font-family: 'Microsoft YaHei',微软雅黑,SimHei,tahoma,arial,helvetica,sans-serif; font-size: 12px;">CancleFlights(){ int i=1,m=1; char BookingRecord[1000]={NULL}, BookingRecord2[400]={NULL}, Temp1[100]={NULL}, Temp2[100]={NULL}; web_reg_save_param("Itinerary","LB=<input type=\"hidden\" name=\"flightID\" value=\"","RB=\"","ORD=ALL",LAST); 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=t8.inf", "Mode=HTML", LAST); i=lr_paramarr_len("Itinerary"); srand((unsigned)time(NULL));//cancle flights if(i!=0) { strcat(BookingRecord,"Body="); strcat(BookingRecord2,"iter=-1&dest=itinerary.pl&"); if(rand()%4==1) //random cancle one or all flights { for(m;m<=i;m++) { sprintf(Temp1,"flightID={Itinerary_%d}&",m); sprintf(Temp2,".cgifields=%d&",m); strcat(BookingRecord,lr_eval_string(Temp1)); strcat(BookingRecord2,lr_eval_string(Temp2)); } strcat(BookingRecord,BookingRecord2); strcat(BookingRecord,"removeAllFlights.x=21&removeAllFlights.y=9");//generate param to cancle all flights } else { for ( m;m<=i;m++ ) { if(rand()%3==1) { sprintf(Temp1,"%d=on&flightID={Itinerary_%d}&",rand()%i,m); } else { sprintf(Temp1,"flightID={Itinerary_%d}&",m); } sprintf(Temp2,".cgifields=%d&",m); strcat(BookingRecord,lr_eval_string(Temp1)); strcat(BookingRecord2,lr_eval_string(Temp2)); } strcat(BookingRecord,BookingRecord2); strcat(BookingRecord,"removeFlights.x=81&removeFlights.y=15"); //generate param to cancle random flights } lr_output_message("%s",BookingRecord); web_reg_find("Search=Body", "Text=Itinerary", LAST); web_custom_request("localredirect.pl", "URL=http://127.0.0.1:1080/cgi-bin/itinerary.pl", "Method=POST", "Referer=http://127.0.0.1:1080/cgi-bin/itinerary.pl", "RecContentType=text/html", "Snapshot=t11.inf", "Mode=HTML", BookingRecord, LAST);} else { lr_error_message("%s","No flight record found!"); } return 0;}</span>
第十一部分
LogOut
<span style="font-family: 'Microsoft YaHei',微软雅黑,SimHei,tahoma,arial,helvetica,sans-serif; font-size: 12px;">LogOut(){ lr_think_time(5); web_url("welcome.pl_2", "URL=http://127.0.0.1:1080/WebTours/home.html", "TargetFrame=", "Resource=0", "RecContentType=text/html", "Referer=http://127.0.0.1:1080/cgi-bin/welcome.pl?signOff=1", "Snapshot=t10.inf", "Mode=HTML", LAST); return 0;}</span>
第十二部分
Vuserend
<span style="font-family: 'Microsoft YaHei',微软雅黑,SimHei,tahoma,arial,helvetica,sans-serif; font-size: 12px;">vuser_end(){ return 0;}</span>
阅读全文
0 0
- 第1讲:LR 自带订票系统完整脚本(纯脚本)
- 第1讲:LR 自带订票系统完整脚本(纯脚本)
- 第2讲:LR自带订票系统脚本说明
- 第2讲:LR自带订票系统脚本说明
- 测试回顾版-第十一讲:Loadrunner8.1自带订票系统脚本实战1
- qtp 订票用户登录脚本参数化实现循环播放(自带的Flight订票系统)
- loadrunner自带web订票系统脚本录制之设置关联
- httpd系统自带启动脚本详解
- sshd系统自带启动脚本详解
- httpd系统自带启动脚本详解
- QTP自带订票系统案例
- 飞机订票系统登录测试脚本
- [置顶] 第6讲:LR 通过录制手机模拟器来产生测试脚本
- 订票脚本程序
- oracle自带脚本说明
- UFT工具 飞机订票系统订单 价格测试脚本
- LR脚本开发
- LR下载文件脚本
- android dialog style属性设置
- 关于linux部署项目后的错误暴露
- iOS开发 实现原生分享 可以跳过选择面板,分享多个文件
- JSP向浏览器输出hello world
- this 基础使用方法
- 第1讲:LR 自带订票系统完整脚本(纯脚本)
- SDWebImage源码阅读
- LINUX 使用tcgetattr与tcsetattr函数控制终端
- 找和为k的两个元素
- 使用浏览器地址栏访问ftp
- 电池-外部DC双电源供电设备电源自动切换电路分享(上)
- cJSON的构造和解析
- C#调试C++ DLL代码
- 百度地图标注公司那家好