0.将loadrunner安装路径下的startserver.bat文件打开,就能访问http://127.0.0.1:1080/WebTours/
1.先创建一个脚本,选择web-http/html
2.点录制按钮录制,并设置相关选项。URL address 填要录制的网页,该案例填写http://127.0.0.1:1080/WebTours/ ,点击recording options,recording选择html-based script,advanced 勾选如图
3.跟着视频做遇到一个问题,回放不成功,报错找不到图片将advanced html 的script type 选择第二个即可 A script containing explict URLs only
4.添加事务(登陆、查找航班、选择航班、支付、退出)结束录制
5.回放
去查看票发现只有一张票,没有回放成功。增强脚本,使得多出一张票,回放成功。
6.增强脚本
定位到登陆事务,发现一串字符,将服务器返回给客户端的动态值关联(复制数字,在它的上一步及打开登陆界面右键选择show snapshot,按CTRL+F查找复制的那串数字,如找不到继续往上,在response栏匹配到那串数字,将那一句话复制到action登陆事务的最前面并注释,开始写关联函数如下,写完关联函数,将脚本中其他的数字串换成{session}。)
关联函数
web_reg_save_param("session","LB=name=\"userSession\" value=\"","RB=\"/>",LAST);
第一个参数可任意取,有意义即可;二三参数表示字符串的左边界和右边界,若边界中有双引号,要在前面加转义符。
7.回放脚本成功
8.将出发城市和到达城市参数化
先将出发城市和到达城市替代成参数如上,再添加数据源city.dat,
参数列表可修改的内容
parameter type 可选择导入文件的类型;
file format 中 first data 可选择从第几行开始;
select next row 可选择循环方式;本实验选择顺序循环,到达城市从第二行开始,这样出发城市和到达城市正好错开一个。
9.设置迭代次数5次
10.回放发现生成了五张票,但是五张票一模一样,参数化没有生效。
lr_start_transaction("3_SelectFlight");web_submit_data("reservations.pl_2", "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=t7.inf", "Mode=HTML", ITEMDATA, "Name=outboundFlight", "Value=353;303;08/27/", ENDITEM, "Name=numPassengers", "Value=1", ENDITEM, "Name=advanceDiscount", "Value=0", ENDITEM, "Name=seatType", "Value=First", ENDITEM, "Name=seatPref", "Value=Window", ENDITEM, "Name=reserveFlights.x", "Value=55", ENDITEM, "Name=reserveFlights.y", "Value=5", ENDITEM, LAST);lr_end_transaction("3_SelectFlight",LR_AUTO);
查看选择航班的代码发现,每次选择的都是353;303;08/27/这个航班,这个值需要进行关联
11.重新回放发现,五张票显示有问题
12.查看response发现,关联的是第一个,而录脚本选择的是第四个,需要加上关联函数的另一个参数Ord
web_reg_save_param("outbound","LB=name=\"outboundFlight\" value=\"","RB=\">","Ord=4",LAST);
13.优化:将登陆操作放在init中,退出操作放在end中
14.如何在脚本中添加事务
15.回放时loadrunner都提示回放成功,但系统中出现各种各样的错误,可以在脚本中加入判断,判断脚本是否真的成功呢。
系统订票成功会提示thank you…,在支付事务中查找这个字符串,将这个字符串关联,将这串值当成一个参数保存起来,比较参数的值是不是包含了thank you .关联写在操作的上面,判断写在操作的下面。
lr_start_transaction("4_payment");//<small><B>Thank you for booking through Web Tours.</B></small>web_reg_save_param("msg","LB=<small><B>","RB=</B></small>",LAST);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=t8.inf", "Mode=HTML", ITEMDATA, "Name=firstName", "Value=huang", ENDITEM, "Name=lastName", "Value=lili", ENDITEM, "Name=address1", "Value=nanjing", ENDITEM, "Name=address2", "Value=jiangsu", ENDITEM, "Name=pass1", "Value=huang lili", ENDITEM, "Name=creditCard", "Value=56413", ENDITEM, "Name=expDate", "Value=1212", ENDITEM, "Name=oldCCOption", "Value=", ENDITEM, "Name=numPassengers", "Value=1", ENDITEM, "Name=seatType", "Value=First", ENDITEM, "Name=seatPref", "Value=Window", ENDITEM, "Name=outboundFlight", "Value={outbound}", ENDITEM, "Name=advanceDiscount", "Value=0", ENDITEM, "Name=returnFlight", "Value=", ENDITEM, "Name=JSFormSubmit", "Value=off", ENDITEM, "Name=.cgifields", "Value=saveCC", ENDITEM, "Name=buyFlights.x", "Value=79", ENDITEM, "Name=buyFlights.y", "Value=6", ENDITEM, LAST);if(strstr(lr_eval_string("{msg}"),"Thank you for booking through Web Tours.")!=NULL){lr_end_transaction("4_payment",LR_PASS);lr_output_message("订票成功,departCity:%s,arriveCity;%s",lr_eval_string("{departCity}"),lr_eval_string("{arriveCity}"));}else{lr_end_transaction("4_payment",LR_FAIL);lr_output_message("订票失败");}
16.将回放设置的日志取消,输出如下