loadrunner问题3:无法成功登陆,原因:动态session,解决:手工关联-LoadRunner自带程序登录功能关联演示
2017-06-07 10:34
615 查看
本文主要讲解一下LoadRunner的关联技术,我们以LoadRunner自带的WEB订票程序为范例,首先录制一段LoadRunner自带的飞机订票程序,录制登录功能即可。
为了让自带程序登录时验证Session,在录制登录脚本前,需要对订票程序做一些设置,启用隐藏字段标记(Session)
1)打开订票程序WEB网站,点击Administrator链接:
2)进入管理页面,选中Set LOGIN form's action tag to an error page
3)点击管理页面最下方的update按钮,保存并更新配置。
好,做完设置之后,我们开始录制一个登录操作脚本,录制登录操作后,产生的一段代码为:
Action()
{
web_url("WebTours",
"URL=http://127.0.0.1:1080/WebTours/",
"Resource=0",
"RecContentType=text/html",
"Referer=",
"Snapshot=t1.inf",
"Mode=HTML",
LAST);
lr_think_time(20);
lr_start_transaction("login");
web_submit_data("login.pl",
"Action=http://127.0.0.1:1080/WebTours/login.pl",
"Method=POST",
"RecContentType=text/html",
"Referer=http://127.0.0.1:1080/WebTours/nav.pl?in=home",
"Snapshot=t2.inf",
"Mode=HTML",
ITEMDATA,
"Name=userSession", "Value=109939.233211827fzftQQQpDAiDDDDDDDQcQpQQfif", ENDITEM,
"Name=username", "Value=jojo", ENDITEM,
"Name=password", "Value=bean", ENDITEM,
"Name=JSFormSubmit", "Value=on", ENDITEM,
"Name=login.x", "Value=43", ENDITEM,
"Name=login.y", "Value=7", ENDITEM,
LAST);
lr_end_transaction("login",LR_AUTO);
return 0;
}
直接进行回放,在Replay Log中,可以看到,没有任何报错,呵呵,脚本运行成功了:),我可以开始准备设计场景运行该脚本了。
别急,其实脚本是执行不成功的,如果现在就用这个脚本进行测试,那意味着你进行了一次错误的测试。
这里,我想说的是:LoadRunner没有报错,并不代表脚本就没有错误,如果LoadRunner报错了,那脚本就一定存在错误。LoadRunner在这一点是不可信的。
不信的话,你可以在在tree View视图中,从回放截图中可以看出,回放失败,并没有进入登录后页面,如下图所示:
从录制的脚本中可以看出,上段脚本中,亮红色标记的user Session是每次都会动态变化的,需要进行关联,
在这里,关联用的函数为web_reg_save_param,打印关联的结果函数为lr_output_message
Action()
{
web_reg_save_param("usersession",
"LB=name=userSession value=",
"RB=>",
"ORD=1",
LAST);
web_url("WebTours",
"URL=http://127.0.0.1:1080/WebTours/",
"Resource=0",
"RecContentType=text/html",
"Referer=",
"Snapshot=t1.inf",
"Mode=HTML",
LAST);
lr_think_time(20);
//脚本录制时产生的SessionId,我做个备份
//109939.233211827fzftQQQpDAiDDDDDDDQcQpQQfif
lr_start_transaction("login");
web_submit_data("login.pl",
"Action=http://127.0.0.1:1080/WebTours/login.pl",
"Method=POST",
"RecContentType=text/html",
"Referer=http://127.0.0.1:1080/WebTours/nav.pl?in=home",
"Snapshot=t2.inf",
"Mode=HTML",
ITEMDATA,
"Name=userSession", "Value={usersession}", ENDITEM, //替换动态生成的user Session
"Name=username", "Value=jojo", ENDITEM,
"Name=password", "Value=bean", ENDITEM,
"Name=JSFormSubmit", "Value=on", ENDITEM,
"Name=login.x", "Value=43", ENDITEM,
"Name=login.y", "Value=7", ENDITEM,
LAST);
lr_end_transaction("login",LR_AUTO);
lr_output_message ( "usersession: %s", lr_eval_string ( "{usersession}" ) ); //打印关联到的user Session
return 0;
}
然后再进行回放,可以看出回放成功,并且脚本正确输出usersession:
为了让自带程序登录时验证Session,在录制登录脚本前,需要对订票程序做一些设置,启用隐藏字段标记(Session)
1)打开订票程序WEB网站,点击Administrator链接:
2)进入管理页面,选中Set LOGIN form's action tag to an error page
3)点击管理页面最下方的update按钮,保存并更新配置。
好,做完设置之后,我们开始录制一个登录操作脚本,录制登录操作后,产生的一段代码为:
Action()
{
web_url("WebTours",
"URL=http://127.0.0.1:1080/WebTours/",
"Resource=0",
"RecContentType=text/html",
"Referer=",
"Snapshot=t1.inf",
"Mode=HTML",
LAST);
lr_think_time(20);
lr_start_transaction("login");
web_submit_data("login.pl",
"Action=http://127.0.0.1:1080/WebTours/login.pl",
"Method=POST",
"RecContentType=text/html",
"Referer=http://127.0.0.1:1080/WebTours/nav.pl?in=home",
"Snapshot=t2.inf",
"Mode=HTML",
ITEMDATA,
"Name=userSession", "Value=109939.233211827fzftQQQpDAiDDDDDDDQcQpQQfif", ENDITEM,
"Name=username", "Value=jojo", ENDITEM,
"Name=password", "Value=bean", ENDITEM,
"Name=JSFormSubmit", "Value=on", ENDITEM,
"Name=login.x", "Value=43", ENDITEM,
"Name=login.y", "Value=7", ENDITEM,
LAST);
lr_end_transaction("login",LR_AUTO);
return 0;
}
直接进行回放,在Replay Log中,可以看到,没有任何报错,呵呵,脚本运行成功了:),我可以开始准备设计场景运行该脚本了。
别急,其实脚本是执行不成功的,如果现在就用这个脚本进行测试,那意味着你进行了一次错误的测试。
这里,我想说的是:LoadRunner没有报错,并不代表脚本就没有错误,如果LoadRunner报错了,那脚本就一定存在错误。LoadRunner在这一点是不可信的。
不信的话,你可以在在tree View视图中,从回放截图中可以看出,回放失败,并没有进入登录后页面,如下图所示:
从录制的脚本中可以看出,上段脚本中,亮红色标记的user Session是每次都会动态变化的,需要进行关联,
在这里,关联用的函数为web_reg_save_param,打印关联的结果函数为lr_output_message
Action()
{
web_reg_save_param("usersession",
"LB=name=userSession value=",
"RB=>",
"ORD=1",
LAST);
web_url("WebTours",
"URL=http://127.0.0.1:1080/WebTours/",
"Resource=0",
"RecContentType=text/html",
"Referer=",
"Snapshot=t1.inf",
"Mode=HTML",
LAST);
lr_think_time(20);
//脚本录制时产生的SessionId,我做个备份
//109939.233211827fzftQQQpDAiDDDDDDDQcQpQQfif
lr_start_transaction("login");
web_submit_data("login.pl",
"Action=http://127.0.0.1:1080/WebTours/login.pl",
"Method=POST",
"RecContentType=text/html",
"Referer=http://127.0.0.1:1080/WebTours/nav.pl?in=home",
"Snapshot=t2.inf",
"Mode=HTML",
ITEMDATA,
"Name=userSession", "Value={usersession}", ENDITEM, //替换动态生成的user Session
"Name=username", "Value=jojo", ENDITEM,
"Name=password", "Value=bean", ENDITEM,
"Name=JSFormSubmit", "Value=on", ENDITEM,
"Name=login.x", "Value=43", ENDITEM,
"Name=login.y", "Value=7", ENDITEM,
LAST);
lr_end_transaction("login",LR_AUTO);
lr_output_message ( "usersession: %s", lr_eval_string ( "{usersession}" ) ); //打印关联到的user Session
return 0;
}
然后再进行回放,可以看出回放成功,并且脚本正确输出usersession:
相关文章推荐
- LoadRunner自带程序登录功能关联演示
- LoadRunner自带程序登录功能关联演示
- 解决密码中包含{},密码修改成功后, 查询分析器无法用此密码登录的问题
- 解决密码中包含{},密码修改成功后, 查询分析器无法用此密码登录的问题
- SQL2008无法连接到.\SQLEXPRESS,用户'sa'登录失败(错误18456)图文解决方法 已成功与服务器建立连接,但是在登录过程中发生错误。 (provider: 共享内存提供程序, er
- SQL SERVER问题解决:已成功与服务器建立连接,但是在登录过程中发生错误。 (provider: 命名管道提供程序, error: 0 - 管道的另一端上无任何进程。)
- app令牌登录解决session超时重登陆的问题
- 解决密码中包含{},密码修改成功后, 查询分析器无法用此密码登录的问题
- Android 自带浏览器谷歌账号自动登录的实现 -- 无法登陆原因分析
- 【Loadrunner】解决controller中负载机连接成功,但执行场景时无法正常执行问题
- phpcms v9 成功安装后无法登陆后台问题与解决
- 安装SQL Server 2000时出现以下错误提示:“以前的某个程序安装已在安装计算机创建挂起的文件操作,运行安装程序之前必须重新启动计算机” 说明:如果重启计算机无法解决问题,可能有以下两个原因
- 解决密码中包含{},密码修改成功后, 查询分析器无法用此密码登录的问题
- 解决密码中包含{},密码修改成功后, 查询分析器无法用此密码登录的问题
- 由于帐户限制,您无法登陆 -- 远程桌面无法登录问题解决方法
- 解决密码中包含{},密码修改成功后, 查询分析器无法用此密码登录的问题
- 由于帐户限制,您无法登陆 -- 远程桌面无法登录问题解决方法
- 解决在VS(winform)程序中无法在调试时修改代码的问题(也就是“编辑并继续”功能无效)
- 解决密码中包含{},密码修改成功后, 查询分析器无法用此密码登录的问题
- BIEE 11G 登陆时出现 “无法登录 验证期间出错” 的问题解决