- 使用的Loadrunner版本是 v12.02
- 录制场景为:WebTours 机票管理系统
- 使用系统:win11,x64
录制步骤
-
找到 Loadrunner安装的路径下 > WebTours 文件夹 > 找到 StartSever.bat 文件,并双击打开;会打开如下图所示cmd窗口
(注:在录制和执行脚本期间,需要始终保持该窗口打开)
-
打开 Virtual User Generator,选择新建脚本
-
填写脚本基本配置信息,选择 Single Protocol > Web -HTTP/HTML 协议格式,设置脚本名称 和 存放位置;然后点击 create
-
create之后,会自动建立一个基本的脚本框架,其中我们录制的脚本需要放到 Action.c 中。
- 点击录制按钮,会弹出录制配置窗口
- Record:选择录制 Web Browser
- Application:指定选择本地浏览器(也可用Loadrunner自带的 Firefox 浏览器)
- URL Address:http://192.168.xx.xx:1080/WebTours/ (换成自己主机的IP)
- Start recording:可选择立即录制;或者延迟录制模式
- Working directory:默认工作配置目录,不用修改
- 配置完成后,点击 Start Recording
- 开始录制后,会进入Web Tour页面,且有一个 录制设置栏
-
在登录操作开始前,插入01_login 事务,方便后续脚本查看和分析;具体步骤:点击插入事务图标 > 输入事务名称 > 点击 OK
-
然后进行登录操作,输入账号、密码进行登录;登录成功后结束该事务:点击右侧结束事务图标 > 再点击01_login
-
点击 Flight,插入 02_search 事务 > 填写地点等信息 > 点击 continue > 结束事务
-
在上一个操作停留的界面;选择航班操作时,插入 03_select 事务 > 选择航班 > 点击 continue > 结束事务
-
在上一个操作停留的界面,支付操作时,插入 04_pay 事务 > 填写账户信息 > 点击 continue > 结束事务
-
在上一个操作停留的界面,插入 05_check 事务 > 点击 Litinerary > 查看预定信息 > 结束事务
-
在上一个操作停留的界面,插入 06_signoff 事务 > 点击 Sign Off > 结束事务
-
到此,录制场景结束;点击结束按钮
-
录制结束后,ld12版本会自动弹出Design Studio窗口,显示识别到的需要添加关联的地方
-
先选择一栏 > 点击 Correlate;Status列显示Applied(绿色图标),说明关联成功
依次关联所有需要关联的栏目
-
关联后,多出来的代码会有标注
-
点击 Replay > Run,进行脚本回放,查看是否回放成功
-
点击 Compile,查看是否可编译成功
参数化处理 - 两种方式
第一种参数化方式(优先推荐)
-
需要参数化的变量 > 右键点击 > 选择 Replace with Parameter > Create New Parameter…
-
在弹出的窗口填写参数名称 > 点击 Properties…
-
选择 Edit with Notepad… > 在打开的notepad窗口中填写 模拟数据 ,保存 > Close
-
参数化之后的变量会变成紫色,username同样步骤进行参数化处理
第二种参数化方式
-
点击 Parameter > 选择 New
-
File Path 设置参数化名称 > 选择 Create Table
-
仍然选择 Edit with Notepad… > 在打开的notepad窗口中填写 模拟数据 ,保存 > Close
-
然后在脚本中找到需要参数化的 value内容;修改为 参数化名称 username / password 等等;才算参数化完成
注:关于 parameter设置窗口下方执行顺序的设置规则说明:
设计脚本
-
打开 HP LoadRunner Controller,打开刚才保存的脚本
-
点击如下图标,设置迭代次数 > OK
-
在Global Schedule 选择 Start … > 右键双击打开 > 设置用户数 和 开始时间
-
在Global Schedule 选择 Duration > 右键双击打开 > 设置执行时间
-
点击窗口下方 Run > 点击右上角 Start Scenario ,即可运行
-
运行界面和运行结束后的界面显示
处理报告
1.运行脚本结束后,选择 Results > Analyze Result,这时会自己拉起打开 Analysis 工具进行分析;等待分析结束即可
- 最终报告界面:

源码
附源码
Action()
{
web_url("welcome.pl",
"URL=http://192.168.11.11:1111/cgi-bin/welcome.pl?signOff=true",
"TargetFrame=",
"Resource=0",
"RecContentType=text/html",
"Referer=http://192.168.11.11:1111/WebTours/",
"Snapshot=t3.inf",
"Mode=HTML",
LAST);
lr_think_time(10);
lr_start_transaction("01_login");
web_submit_data("login.pl",
"Action=http://192.168.11.11:1111/cgi-bin/login.pl",
"Method=POST",
"TargetFrame=body",
"RecContentType=text/html",
"Referer=http://192.168.11.11:1111/cgi-bin/nav.pl?in=home",
"Snapshot=t4.inf",
"Mode=HTML",
ITEMDATA,
"Name=userSession", "Value=0AA", ENDITEM,
"Name=username", "Value=gaohui", ENDITEM,
"Name=password", "Value=test", ENDITEM,
"Name=login.x", "Value=63", ENDITEM,
"Name=login.y", "Value=7", ENDITEM,
"Name=JSFormSubmit", "Value=off", ENDITEM,
LAST);
lr_end_transaction("01_login",LR_AUTO);
lr_think_time(10);
//*Correlation comment - Do not change! Original value='flights' Name ='in' Type ='ResponseBased'*/
web_reg_save_param_regexp(
"ParamName=in",
"RegExp=images/(.*?)\\.gif",
SEARCH_FILTERS,
"Scope=Body",
"IgnoreRedirections=No",
"RequestUrl=*/nav.pl*",
LAST);
//*Correlation comment - Do not change! Original value='itinerary' Name ='page' Type ='ResponseBased'*/
web_reg_save_param_regexp(
"ParamName=page",
"RegExp=page=(.*?)\"\\ TARGET",
"Ordinal=2",
SEARCH_FILTERS,
"Scope=Body",
"IgnoreRedirections=No",
"RequestUrl=*/nav.pl*",
LAST);
/*Correlation comment - Do not change! Original value='roundtrip' Name ='.cgifields' Type ='ResponseBased'*/
web_reg_save_param_regexp(
"ParamName=.cgifields",
"RegExp=\\ name=\"(.*?)\"\\ value",
"Ordinal=5",
SEARCH_FILTERS,
"Scope=Body",
"IgnoreRedirections=No",
"RequestUrl=*/reservations.pl*",
LAST);
/*Correlation comment - Do not change! Original value='seatPref' Name ='Name' Type ='ResponseBased'*/
web_reg_save_param_regexp(
"ParamName=Name",
"RegExp=\\ name=\"(.*?)\"\\ value",
"Ordinal=6",
SEARCH_FILTERS,
"Scope=Body",
"IgnoreRedirections=No",
"RequestUrl=*/reservations.pl*",
LAST);
/*Correlation comment - Do not change! Original value='seatType' Name ='Name_1' Type ='ResponseBased'*/
web_reg_save_param_regexp(
"ParamName=Name_1",
"RegExp=\\ name=\"(.*?)\"\\ value",
"Ordinal=9",
SEARCH_FILTERS,
"Scope=Body",
"IgnoreRedirections=No",
"RequestUrl=*/reservations.pl*",
LAST);
/*Correlation comment - Do not change! Original value='reservations.pl' Name ='CorrelationParameter' Type ='ResponseBased'*/
web_reg_save_param_regexp(
"ParamName=CorrelationParameter",
"RegExp=frame\\ src=\"(.*?)\\?page",
"Ordinal=2",
SEARCH_FILTERS,
"Scope=Body",
"IgnoreRedirections=No",
"RequestUrl=*/welcome.pl*",
LAST);
web_url("Search Flights Button",
"URL=http://192.168.11.11:1111/cgi-bin/welcome.pl?page=search",
"TargetFrame=body",
"Resource=0",
"RecContentType=text/html",
"Referer=http://192.168.11.11:1111/cgi-bin/nav.pl?page=menu&in=home",
"Snapshot=t5.inf",
"Mode=HTML",
LAST);
lr_think_time(10);
lr_start_transaction("02_search");
/*Correlation comment - Do not change! Original value='262;1039;12/24/2024' Name ='outboundFlight' Type ='ResponseBased'*/
web_reg_save_param_regexp(
"ParamName=outboundFlight",
"RegExp=name=\"outboundFlight\"\\ value=\"(.*?)\">Blue\\ Sky\\ Air\\ 262",
SEARCH_FILTERS,
"Scope=Body",
"IgnoreRedirections=No",
LAST);
web_submit_data("reservations.pl",
"Action=http://192.168.11.11:1111/cgi-bin/{CorrelationParameter}",
"Method=POST",
"TargetFrame=",
"RecContentType=text/html",
"Referer=http://192.168.11.11:1111/cgi-bin/{CorrelationParameter}?page=welcome",
"Snapshot=t6.inf",
"Mode=HTML",
ITEMDATA,
"Name=advanceDiscount", "Value=0", ENDITEM,
"Name=depart", "Value=London", ENDITEM,
"Name=departDate", "Value=12/24/2024", ENDITEM,
"Name=arrive", "Value=San Francisco", ENDITEM,
"Name=returnDate", "Value=12/25/2024", ENDITEM,
"Name=numPassengers", "Value=1", ENDITEM,
"Name={Name}", "Value=Window", ENDITEM,
"Name={Name_1}", "Value=First", ENDITEM,
"Name=findFlights.x", "Value=25", ENDITEM,
"Name=findFlights.y", "Value=7", ENDITEM,
"Name=.cgifields", "Value={.cgifields}", ENDITEM,
"Name=.cgifields", "Value={Name_1}", ENDITEM,
"Name=.cgifields", "Value={Name}", ENDITEM,
LAST);
lr_end_transaction("02_search",LR_AUTO);
lr_think_time(10);
lr_start_transaction("03_select");
web_submit_data("reservations.pl_2",
"Action=http://192.168.11.11:1111/cgi-bin/{CorrelationParameter}",
"Method=POST",
"TargetFrame=",
"RecContentType=text/html",
"Referer=http://192.168.11.11:1111/cgi-bin/{CorrelationParameter}",
"Snapshot=t7.inf",
"Mode=HTML",
ITEMDATA,
"Name=outboundFlight", "Value={outboundFlight}", ENDITEM,
"Name=numPassengers", "Value=1", ENDITEM,
"Name=advanceDiscount", "Value=0", ENDITEM,
"Name={Name_1}", "Value=First", ENDITEM,
"Name={Name}", "Value=Window", ENDITEM,
"Name=reserveFlights.x", "Value=48", ENDITEM,
"Name=reserveFlights.y", "Value=6", ENDITEM,
LAST);
lr_end_transaction("03_select",LR_AUTO);
lr_think_time(10);
lr_start_transaction("04_pay");
web_submit_data("reservations.pl_3",
"Action=http://192.168.11.11:1111/cgi-bin/{CorrelationParameter}",
"Method=POST",
"TargetFrame=",
"RecContentType=text/html",
"Referer=http://192.168.11.11:1111/cgi-bin/{CorrelationParameter}",
"Snapshot=t8.inf",
"Mode=HTML",
ITEMDATA,
"Name=firstName", "Value=H", ENDITEM,
"Name=lastName", "Value=G", ENDITEM,
"Name=address1", "Value=SH", ENDITEM,
"Name=address2", "Value=;CN", ENDITEM,
"Name=pass1", "Value= echo", ENDITEM,
"Name=creditCard", "Value=hui", ENDITEM,
"Name=expDate", "Value=gao", ENDITEM,
"Name=saveCC", "Value=on", ENDITEM,
"Name=oldCCOption", "Value=on", ENDITEM,
"Name=numPassengers", "Value=1", ENDITEM,
"Name={Name_1}", "Value=First", ENDITEM,
"Name={Name}", "Value=Window", ENDITEM,
"Name=outboundFlight", "Value={outboundFlight}", ENDITEM,
"Name=advanceDiscount", "Value=0", ENDITEM,
"Name=returnFlight", "Value=", ENDITEM,
"Name=JSFormSubmit", "Value=off", ENDITEM,
"Name=buyFlights.x", "Value=35", ENDITEM,
"Name=buyFlights.y", "Value=13", ENDITEM,
"Name=.cgifields", "Value=saveCC", ENDITEM,
LAST);
lr_end_transaction("04_pay",LR_AUTO);
lr_think_time(10);
lr_start_transaction("05_check");
web_url("Itinerary Button",
"URL=http://192.168.11.11:1111/cgi-bin/welcome.pl?page={page}",
"TargetFrame=body",
"Resource=0",
"RecContentType=text/html",
"Referer=http://192.168.11.11:1111/cgi-bin/nav.pl?page=menu&in={in}",
"Snapshot=t9.inf",
"Mode=HTML",
LAST);
lr_end_transaction("05_check",LR_AUTO);
lr_think_time(10);
lr_start_transaction("06_signout");
web_url("SignOff Button",
"URL=http://192.168.11.11:1111/cgi-bin/welcome.pl?signOff=1",
"TargetFrame=body",
"Resource=0",
"RecContentType=text/html",
"Referer=http://192.168.11.11:1111/cgi-bin/nav.pl?page=menu&in={page}",
"Snapshot=t10.inf",
"Mode=HTML",
LAST);
lr_end_transaction("06_signout",LR_AUTO);
return 0;
}
遇到的一些问题及解决方案
Loadrunner 12.02录制失败,loadrunner no correlation…解决办法
Loadrunner, Error -27979:Requested form not found解决方案
Loadrunner关联回放报错:Error -35049 No match found for the requested parameter “x“, check whether the requ
Loadrunner12 Controller 运行时不显示具体信息可视化的表格视图 解决方案
Loadrunner Controller cannot create Vusers.Ensure that your load…问题解决