錄製一遍腳本發現了這樣的一段腳本
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=142;121;08/17/2015", 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=26", ENDITEM,
"Name=reserveFlights.y", "Value=8", ENDITEM,
LAST);
黃色部分正好是選擇出發城市和目的城市之後的頁面出現的四種機票之一,要想在腳本回放的過程中,無論前一頁選擇了什麼出發城市和目的城市,然後在這一頁都能隨機的選擇一種機票所以此處黃色部分可以先關聯出來,然後直接用參數替代,就可以達到想要的效果了
如圖所示,在firebug工具中看到服務器響應內容中有這樣一段內容
<input type = radio name=outboundFlight value=890;1073;08/17/2015 checked >Blue Sky Air 890<td align=center>8am<td align=center>$ 1073</TD></TR><tr bgcolor=#EFF2F7><td align=center><input type = radio name=outboundFlight value=891;956;08/17/2015>Blue Sky Air 891<td align=center>1pm<td align=center>$ 956</TD></TR><tr bgcolor=#EFF2F7><td align=center><input type = radio name=outboundFlight value=892;1015;08/17/2015>Blue Sky Air 892<td align=center>5pm<td align=center>$ 1015</TD></TR><tr bgcolor=#EFF2F7><td align=center><input type = radio name=outboundFlight value=893;878;08/17/2015>Blue Sky Air 893<td align=center>11pm<td align=center>$ 878<
繼續拆分一下可以發現正好是頁面的四種選擇
outboundFlight value=890;1073;08/17/2015 checked >Blue Sky Air 890<td
outboundFlight value=891;956;08/17/2015>Blue Sky Air 891<td
outboundFlight value=892;1015;08/17/2015>Blue Sky Air 892<td
outboundFlight value=893;878;08/17/2015>Blue Sky Air 893<td
那麼這裏有一個問題,用firebug工具觀察多次,發現第一中類型的機票總是多了"checked"這個字段
我們需要的是類似這樣的內容
142;121;08/17/2015
所以如何關聯出來這部分內容,讓腳本中的web_submit_data函數直接用呢?
首先做關聯,確定左右邊界,這裏我把右邊界設置成2015,然後再最下面{Flightvalue1}2015直接拼接就可以用了
web_reg_save_param("Flightvalue",
"LB=outboundFlight value=",
"RB=2015",
"Ord=All",
LAST);
web_submit_data("選擇出發和目的地",
"Action=http://{ip}/WebTours/reservations.pl",
"Method=POST",
"TargetFrame=",
"RecContentType=text/html",
"Referer=http://{ip}/WebTours/reservations.pl?page=welcome",
"Snapshot=t7.inf",
"Mode=HTML",
ITEMDATA,
"Name=advanceDiscount", "Value=0", ENDITEM,
"Name=depart", "Value={city1}", ENDITEM,
"Name=departDate", "Value={depart_date}", ENDITEM,
"Name=arrive", "Value={city2}", ENDITEM,
"Name=returnDate", "Value={arrive_date}", ENDITEM,
"Name=numPassengers", "Value={passenger}", 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=57", ENDITEM,
"Name=findFlights.y", "Value=8", ENDITEM,
LAST);
for (j=1;j<=atoi(lr_eval_string("{Flightvalue_count}"));j++) {
sprintf(buffer2,"{Flightvalue_%d}",j);
sprintf(Flightvalue555,"%s",lr_eval_string(buffer2));
lr_output_message(lr_eval_string(buffer2));
}
lr_save_string(Flightvalue555,"Flightvalue1");
web_submit_data("選擇航班",
"Action=http://{ip}/WebTours/reservations.pl",
"Method=POST",
"TargetFrame=",
"RecContentType=text/html",
"Referer=http://{ip}/WebTours/reservations.pl",
"Snapshot=t8.inf",
"Mode=HTML",
ITEMDATA,
"Name=outboundFlight", "Value={Flightvalue1}2015", ENDITEM, //這裏要做關聯,一般都會出來四個選擇,選擇其中之一
"Name=numPassengers", "Value={passenger}", ENDITEM,
"Name=advanceDiscount", "Value=0", ENDITEM,
"Name=seatType", "Value={seatType}", ENDITEM,
"Name=seatPref", "Value={seatPref}", ENDITEM,
"Name=reserveFlights.x", "Value=37", ENDITEM,
"Name=reserveFlights.y", "Value=12", ENDITEM,
LAST);
拼接的例子還有很多,可以用到c語言中的其他一些字符串處理函數拼接好後,存入一個參數中,然後直接就可以用了