第1讲:LR 自带订票系统完整脚本(纯脚本)

来源:互联网 发布:电脑编程入门教程 编辑:程序博客网 时间:2024/06/05 22:53

各位新年好!

 

      前两周将LR在手机应用测试实现作了简单介绍,相信各位对如何使用有一定的了解,当然仅仅是包括了最基本如何去实现问题,今天也不例外,因为注意到LR自带的订票系统(11.5的,之前的订票系统可能有些不一样)是不少像我一样的初学者拿来做实验的,网上有部分脚本,但我看了下不是很完整,所以就在此补充了。欢迎各位大侠拍砖。



 第一部分:

vuser_init

 

 

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;}

 

第三部分:

SubmitLogin

 

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;}

 

 第四部分:

Flights

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;}

 

第五部分

FlightInfo

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;}

 

第六部分

SubmitFlight

 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;}

 

第七部分

SelectFlight

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;}

第八部分

SubmitPatmentDetails

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;}

 

第九部分

Invoice

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;}

 

 第十部分

CancleFlights

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;}

 第十一部分

LogOut

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;}

 

第十二部分

Vuserend

vuser_end(){ return 0;}

 

因为这篇脚本太长了,相关的说明及注意事项将在下篇介绍。

  • 大小: 60.5 KB
  • 查看图片附件
0 0
原创粉丝点击