web类协议脚本-飞机订票系统示例

以下是LR自带的飞机订票系统的Demo,希望能帮助大家。

Action()
{
 int iRand;
 int iTmp;
 char *strTmpA;
 char *strTmpB;
 char *strTmpC;
 char *position;
 if ((strTmpA = (char *)malloc(100 * sizeof(char))) == NULL) { 
     lr_output_message ("Insufficient memory available"); 
     return -1; 
    } 
 if ((strTmpB = (char *)malloc(100 * sizeof(char))) == NULL) { 
     lr_output_message ("Insufficient memory available"); 
     return -1; 
 } 
 if ((strTmpC = (char *)malloc(100 * sizeof(char))) == NULL) { 
     lr_output_message ("Insufficient memory available"); 
     return -1; 
 } 
 web_reg_save_param("userSession",
  "LB=<input type=hidden name=userSession value=",
  "RB=>",
  LAST);
 web_url("WebTours", 
  "URL=http://127.0.0.1:1080/WebTours/", 
  "TargetFrame=", 
  "Resource=0", 
  "RecContentType=text/html", 
  "Referer=", 
  "Snapshot=t2.inf", 
  "Mode=HTML", 
  LAST);
 //lr_start_transaction("login");
 //r_think_time(17);
 web_submit_data("login.pl", 
  "Action=http://127.0.0.1:1080/WebTours/login.pl", 
  "Method=POST", 
  "TargetFrame=", 
  "RecContentType=text/html", 
  "Referer=http://127.0.0.1:1080/WebTours/nav.pl?in=home", 
  "Snapshot=t3.inf", 
  "Mode=HTML", 
  ITEMDATA, 
  "Name=userSession", "Value={userSession}", ENDITEM, 
  "Name=username", "Value=demo", ENDITEM, 
  "Name=password", "Value=demo", ENDITEM, 
  "Name=JSFormSubmit", "Value=on", ENDITEM, 
  "Name=login.x", "Value=26", ENDITEM, 
  "Name=login.y", "Value=5", ENDITEM, 
  LAST);
 //lr_end_transaction("login",LR_AUTO);
 lr_start_transaction("order");
 //r_think_time(9);
web_reg_save_param("City",
  "LB=<option ",
  "RB=</option>",
  "Ord=ALL",
  LAST);
web_url("Search Flights Button", 
  "URL=http://127.0.0.1:1080/WebTours/welcome.pl?page=search", 
  "TargetFrame=body", 
  "Resource=0", 
  "RecContentType=text/html", 
  "Referer=http://127.0.0.1:1080/WebTours/nav.pl?page=menu&in=home", 
  "Snapshot=t4.inf", 
  "Mode=HTML", 
  LAST);
 web_url("FormDateUpdate.class", 
  "URL=http://127.0.0.1:1080/WebTours/FormDateUpdate.class", 
  "TargetFrame=", 
  "Resource=0", 
  "RecContentType=text/html", 
  "Referer=", 
  "Mode=HTML", 
  LAST);
 web_url("CalSelect.class", 
  "URL=http://127.0.0.1:1080/WebTours/CalSelect.class", 
  "TargetFrame=", 
  "Resource=0", 
  "RecContentType=text/html", 
  "Referer=", 
  "Mode=HTML", 
  LAST);
 web_url("Calendar.class", 
  "URL=http://127.0.0.1:1080/WebTours/Calendar.class", 
  "TargetFrame=", 
  "Resource=0", 
  "RecContentType=text/html", 
  "Referer=", 
  "Mode=HTML", 
  LAST);
 //r_think_time(7);
 lr_output_message(lr_eval_string("The City count is:{City_count}"));
 iTmp = atoi(lr_eval_string("{City_count}")); //城市个数转换成int类型
 //   srand(time(NULL)); 
 iRand = rand() % (iTmp/2+1);   //随机数+1的含义是避免出现随机数是0得到City_0 加1得到的最终随机数=随机数+1;
 sprintf(strTmpA,"{City_%d}", iRand); //获取随机取到的城市编号
 sprintf(strTmpA, lr_eval_string(strTmpA)); //获取城市编号对应的值
 lr_message("The depart city is %s", strTmpA); //打印城市名称 value="Frankfurt">Frankfurt
    position = (char *)strstr(strTmpA, ">");  //定位到">"位置
 lr_save_string(position+1, "DepartCity");  //">"位置+1就是要获取的城市名称

 iRand = rand() % (iTmp/2+1);
 sprintf(strTmpB,"{City_%d}", iRand);
 sprintf(strTmpB, lr_eval_string(strTmpB));
 lr_message("The depart city is %s", strTmpB);
    position = (char *)strstr(strTmpB, ">"); 
 lr_save_string(position+1, "ArriveCity");
 while(strcmp(lr_eval_string("{DepartCity}"), lr_eval_string("{ArriveCity}")) == 0)
    {
  iRand = rand() % (iTmp/2) +1;
 
  sprintf(strTmpB,"{City_%d}", iRand);
 
  sprintf(strTmpB, lr_eval_string(strTmpB));
 
  lr_message("The depart city is %s", strTmpB);
 
  position = (char *)strstr(strTmpB, ">"); 
 
  lr_save_string(position+1, "ArriveCity");
 }
 web_reg_save_param("FlightNo",
  "LB=<input type = radio name=outboundFlight value=",
  "RB=>",
  "Ord=ALL",
  LAST);
//<input type = radio name=outboundFlight value=010;386;04/19/2015 checked >Blue Sky Air 010<
 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=t5.inf", 
  "Mode=HTML", 
  ITEMDATA, 
  "Name=advanceDiscount", "Value=0", ENDITEM, 
  "Name=depart", "Value={DepartCity}", ENDITEM, 
  "Name=departDate", "Value={departDate}", ENDITEM, 
  "Name=arrive", "Value={ArriveCity}", ENDITEM, 
  "Name=returnDate", "Value={arriveDate}", ENDITEM, 
  "Name=numPassengers", "Value=1", ENDITEM, 
  "Name=seatPref", "Value=None", ENDITEM, 
  "Name=seatType", "Value=Coach", ENDITEM, 
  "Name=.cgifields", "Value=roundtrip", ENDITEM, 
  "Name=.cgifields", "Value=seatType", ENDITEM, 
  "Name=.cgifields", "Value=seatPref", ENDITEM, 
  "Name=findFlights.x", "Value=54", ENDITEM, 
  "Name=findFlights.y", "Value=5", ENDITEM, 
  LAST);
iTmp = atoi(lr_eval_string("{FlightNo_count}"));
 iRand = rand() % iTmp +1;
 //iRand = 1;
 sprintf(strTmpC,"{FlightNo_%d}", iRand);
 sprintf(strTmpC, lr_eval_string(strTmpC));
 lr_message("The Flight No is %s", strTmpC);
    position = (char *)strstr(strTmpC, "checked"); 
 if (position != NULL) {
  sprintf(position -1, "");
 }
 lr_save_string(strTmpC, "FlightNewNo");
 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=t6.inf", 
  "Mode=HTML", 
  ITEMDATA, 
  "Name=outboundFlight", "Value={FlightNewNo}", ENDITEM, 
  "Name=numPassengers", "Value=1", ENDITEM, 
  "Name=advanceDiscount", "Value=0", ENDITEM, 
  "Name=seatType", "Value=Coach", ENDITEM, 
  "Name=seatPref", "Value=None", ENDITEM, 
  "Name=reserveFlights.x", "Value=15", ENDITEM, 
  "Name=reserveFlights.y", "Value=2", ENDITEM, 
  LAST);
 //r_think_time(4);
 web_submit_data("reservations.pl_3", 
  "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=t7.inf", 
  "Mode=HTML", 
  ITEMDATA, 
  "Name=firstName", "Value=Demo", ENDITEM, 
  "Name=lastName", "Value=Demo", ENDITEM, 
  "Name=address1", "Value=AAA", ENDITEM, 
  "Name=address2", "Value=", ENDITEM, 
  "Name=pass1", "Value=Demo Demo", ENDITEM, 
  "Name=creditCard", "Value=", ENDITEM, 
  "Name=expDate", "Value=", ENDITEM, 
  "Name=oldCCOption", "Value=", ENDITEM, 
  "Name=numPassengers", "Value=1", ENDITEM, 
  "Name=seatType", "Value=Coach", ENDITEM, 
  "Name=seatPref", "Value=None", ENDITEM, 
  "Name=outboundFlight", "Value={FlightNewNo}", ENDITEM, 
  "Name=advanceDiscount", "Value=0", ENDITEM, 
  "Name=returnFlight", "Value=", ENDITEM, 
  "Name=JSFormSubmit", "Value=off", ENDITEM, 
  "Name=.cgifields", "Value=saveCC", ENDITEM, 
  "Name=buyFlights.x", "Value=37", ENDITEM, 
  "Name=buyFlights.y", "Value=5", ENDITEM, 
  LAST);
 lr_end_transaction("order",LR_AUTO);
 //lr_start_transaction("logout");
 ////r_think_time(13);
 web_url("welcome.pl", 
  "URL=http://127.0.0.1:1080/WebTours/welcome.pl?signOff=1", 
  "TargetFrame=", 
  "Resource=0", 
  "RecContentType=text/html", 
  "Referer=http://127.0.0.1:1080/WebTours/nav.pl?page=menu&in=flights", 
  "Snapshot=t8.inf", 
  "Mode=HTML", 
  LAST);
 //lr_end_transaction("logout",LR_AUTO);
 free(strTmpA);
 free(strTmpB);
 free(strTmpC);
 return 0;
}
原文地址:https://www.cnblogs.com/ssj0723/p/9581713.html