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

阅读更多

各位新年好!

 

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


第1讲:LR 自带订票系统完整脚本(纯脚本)_第1张图片
 第一部分:

vuser_init

 

 

HomePage()
{

		web_reg_save_param("UserSession",
		"LB=",
		"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, karsen, 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=",
		"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=",
		"Ordinal=all",
		SEARCH_FILTERS,
		LAST);
	web_reg_save_param_ex(
		"ParamName=ReturnFlightParam",
		"LB=",
		"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=","ORD=ALL","Savelen=17",LAST);
	    web_reg_save_param ("ReturnFlight","LB=","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=

 第十一部分

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

 

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

  • 第1讲:LR 自带订票系统完整脚本(纯脚本)_第2张图片
  • 大小: 60.5 KB
  • 查看图片附件

你可能感兴趣的:(LoadRunner,LR,自带程序脚本,飞机订票系统)