您现在的位置是:首页 > cms教程 > Discuz教程Discuz教程
LR实战Discuz开源论坛登录脚本
紫蓝2025-07-08Discuz教程已有人查阅
导读脚本业务流:访问Discuz论坛首页--登录论坛--退出论坛。本次使用LoadRunner11版本。一、录制脚本注意1、确保Discuz论坛能在服务器运行正常。2、录制前先试访问Discuz论坛注册一个测试用户。
脚本业务流:访问Discuz论坛首页--登录论坛--退出论坛。本次使用LoadRunner11版本。
一、录制脚本注意
1、确保Discuz论坛能在服务器运行正常。
2、录制前先试访问Discuz论坛注册一个测试用户。
3、选择录制协议,Discuz论坛是一个B/S架构的web论坛,使用常用协议“web(HTTP/HTML)”录制。
4、录制选项的设置,特别注意录制时的HTTP/HTML级别的选择是“基于HTML的脚本”还是“基于URL的脚本”,这里选择“基于HTML的脚本”。
5、录制完脚本后,先保存脚本,再回放一遍。
二、优化脚本
使用LoadRunner录制后的脚本,通常都是需要优化完善脚本。这里只展示action中的登录部分,优化完善后的脚本如下:
使用函数:
使用函数:web_find() 或 web_reg_find() 或 web_image_check(),下面分别说明
(1)web_find()
参数举例:
(2)web_reg_find()
参数举例:
(3)web_image_check()
参数说明:
3、参数化设置,LR录制登录的脚本,一般需要参数化脚本中的登录用户和对应的密码,以便更加真实地模仿系统的业务操作。参数化的设置,点击工具栏图标打开参数列表,或者点击菜单“Vuser--参数列表”,或使用快捷方式“Ctrl+L”,点击新建,定义参数名称username和password,创建表并输入内容后,这里特别需要注意设置的是参数名username和password相对应,通过参数列表中的数据方式和更新值方式来设置,username参数要与password参数对应设置正确,脚本回放时才能模拟用户登录成功,
(1)、username参数名设置
(2)password参数名设置
(3)、参数化设置中,“Select next row”和“Update value on”这两个属性组合,产生九种组合方式,每种方式都不一样,参数化的结果也不一样,下面是参数取值方式说明
Select next row:
Sequential:每个VU按照顺序读取。每一个虚拟用户都会按照相同的顺序读取。
Random:每个VU随机读取一个。
Unique:每个VU顺序取唯一的值。注意:使用该类型必须注意数据池中数据充足。
Same Line As 某个参数(比如Name):和前面定义的参数Name 取同行的记录。通常用在有关联性的数据上面。
Update value on:
Once 在所有的反复中都使用同一个值 只取一次
each iteration 每次反复都要取新值
each occurrence 只要发现该参数就要重新取值,也就是如果一个action中有多个该参数,每遇到一个就要重新取一个值。
(4)、在脚本中,选中需要参数化的脚本,鼠标右键“使用现有参数”选择对应要参数化的参数名即可。
(5)、在脚本中输出参数化日志信息
再次回放脚本,在菜单“视图--测试结果”中可以看到关联函数执行成功。
5、 点设置, 点的设置在菜单“插入-- ”即可, 点名称需顾名思义,看到就能理解。另外需要注意, 点要放在开始事务的前面,思考时间(lr_think_time函数)的后面。
使用函数:lr_rendezvous(" 点名称");
一、录制脚本注意
1、确保Discuz论坛能在服务器运行正常。
2、录制前先试访问Discuz论坛注册一个测试用户。
3、选择录制协议,Discuz论坛是一个B/S架构的web论坛,使用常用协议“web(HTTP/HTML)”录制。
4、录制选项的设置,特别注意录制时的HTTP/HTML级别的选择是“基于HTML的脚本”还是“基于URL的脚本”,这里选择“基于HTML的脚本”。
5、录制完脚本后,先保存脚本,再回放一遍。
二、优化脚本
使用LoadRunner录制后的脚本,通常都是需要优化完善脚本。这里只展示action中的登录部分,优化完善后的脚本如下:
Action_login()
{
lr_think_time(12);
//添加登录时的 点Login
lr_rendezvous("login");
//设置开始事务
lr_start_transaction("login");
web_submit_data("member.php",
"Action=http://127.0.0.1/Discuz/upload/member.php?mod=logging&action=login&loginsubmit=yes&infloat=yes&lssubmit=yes&inajax=1",
"Method=POST",
"RecContentType=text/xml",
"Referer=http://127.0.0.1/Discuz/upload/forum.php",
"Snapshot=t2.inf",
"Mode=HTML",
ITEMDATA,
"Name=fastloginfield", "Value=username", ENDITEM,
"Name=username", "Value={username}", ENDITEM,
"Name=password", "Value={password}", ENDITEM,
"Name=quickforward", "Value=yes", ENDITEM,
"Name=handlekey", "Value=ls", ENDITEM,
LAST);
//输出参数化日志信息
lr_output_message("登录用户名:%s", lr_eval_string("{username}"));
lr_output_message("登录密码:%s", lr_eval_string("{password}"));
web_add_cookie("mlMh_2132_checkfollow=1; DOMAIN=127.0.0.1");
web_add_cookie("mlMh_2132_lastact=1399082672%09forum.php%09; DOMAIN=127.0.0.1");
web_add_cookie("mlMh_2132_checkpm=1; DOMAIN=127.0.0.1");
//设置关联 Correlation comment - Do not change!Original value='935343df' Name ='CorrelationParameter_1'
web_reg_save_param_ex(
"ParamName=CorrelationParameter_1",
"LB=formhash=",
"RB=\">退出",
SEARCH_FILTERS,
"Scope=Body",
"RequestUrl=*/forum.php*",
LAST);
//添加文本检查点,检查登录用户yuxiuquan是否登录
web_reg_find("Text=yuxiuquan",
LAST);
web_url("forum.php_2",
"URL=http://127.0.0.1/Discuz/upload/forum.php",
"Resource=0",
"RecContentType=text/html",
"Referer=",
"Snapshot=t3.inf",
"Mode=HTML",
EXTRARES,
"URL=static/image/common/background.png", ENDITEM,
"URL=static/image/common/nv.png", ENDITEM,
"URL=static/image/common/search.png", ENDITEM,
"URL=static/image/common/arrwd.gif", ENDITEM,
"URL=static/image/feed/friend_b.png", ENDITEM,
"URL=static/image/feed/favorite_b.png", ENDITEM,
"URL=static/image/feed/thread_b.png", ENDITEM,
"URL=static/image/feed/magic_b.png", ENDITEM,
"URL=static/image/feed/medal_b.png", ENDITEM,
"URL=static/image/common/tip_bottom.png", ENDITEM,
"URL=static/image/common/style_switch.png", ENDITEM,
"URL=static/image/common/user_online.gif", ENDITEM,
"URL=static/image/common/qmenu.png", ENDITEM,
"URL=static/image/common/nv_a.png", ENDITEM,
"URL=static/image/common/pt_item.png", ENDITEM,
"URL=static/image/common/chart.png", ENDITEM,
"URL=static/image/feed/task_b.png", ENDITEM,
"URL=static/image/common/scrolltop.png", ENDITEM,
"URL=static/image/common/titlebg.png", ENDITEM,
"URL=http://cp.discuz.qq.com/tips/get?rand=310&s_id=&product_version=X2.5&product_release=20120413&fix_bug=25000000&is_founder=&s_url=http%3A%2F%2F127.0.0.1%2FDiscuz%2Fupload%2F&last_send_time=&ts=1399082672&sig=&admin_id=0&group_id=10&open_id=&uid=2&callback=discuzTipsCallback", ENDITEM,
LAST);
//设置结束事务
lr_end_transaction("login", LR_AUTO);
return 0;
}
1、事务设置,开始事务和结束事务的名称必须一致,事务的设置必须成对出现,即有开始事务也要有结束事务,开始事务应该放在脚本开始的位置,结束事务放在脚本结束的位置,但不要将思考时间(lr_think_time函数)放在事务开始和事务结束之间。其实,设置事务,可以在“Run_time Settings”里设置的,可以设置成“将每个操作定义为一个事务”,也可以设置为“将每个步骤定义为一个事务”,根据需要设置。我这里是自己手动在脚本设置的。使用函数:
lr_start_transaction("事务名称");
lr_end_transaction("事务名称",LR_AUTO);
2、检查点设置,LR的检查点分为文本检查点和图像检查点,添加检查点的方法很简单,在LR的树形视图中,打开视图登录页面,选择需要检查的内容(文本或者图像),鼠标右键选择“添加文本检查点(web_reg_find())”即可,若要手动添加检查点,则需要把检查点设置在返回页面的之前。之后,在脚本中添加了检查点,要在Vuser->Run-Tme Settings中更改下设置,勾选Enable Image and text check。使用函数:web_find() 或 web_reg_find() 或 web_image_check(),下面分别说明
(1)web_find()
参数举例:
web_find("web_find","RighOf=a","LeftOf=b","What=name",LAST);
参数解释:"web_find"定义该查找函数的名称;“LeftOf”和“RighOf=”用来定义查找字符的左右边界;“What=”定义查找内容。(2)web_reg_find()
参数举例:
web_reg_find("Search=Body","SaveCount=ddd","Test=aaa",LAST);
参数解释: Search用来定义查找范围,SaveCount定义查找计数变量名称,该参数可以记录在缓存中查找内容出现的次数,可以使用该值,来判断要查找的内容是否被找到。(3)web_image_check()
参数说明:
web_image_check("web_image_check","Alt=","Src=",LAST);;
参数解释:“Alt”和“Src”的值直接取该图片在网页源代码中相应参数的值。3、参数化设置,LR录制登录的脚本,一般需要参数化脚本中的登录用户和对应的密码,以便更加真实地模仿系统的业务操作。参数化的设置,点击工具栏图标打开参数列表,或者点击菜单“Vuser--参数列表”,或使用快捷方式“Ctrl+L”,点击新建,定义参数名称username和password,创建表并输入内容后,这里特别需要注意设置的是参数名username和password相对应,通过参数列表中的数据方式和更新值方式来设置,username参数要与password参数对应设置正确,脚本回放时才能模拟用户登录成功,
(1)、username参数名设置
(2)password参数名设置
(3)、参数化设置中,“Select next row”和“Update value on”这两个属性组合,产生九种组合方式,每种方式都不一样,参数化的结果也不一样,下面是参数取值方式说明
Select next row:
Sequential:每个VU按照顺序读取。每一个虚拟用户都会按照相同的顺序读取。
Random:每个VU随机读取一个。
Unique:每个VU顺序取唯一的值。注意:使用该类型必须注意数据池中数据充足。
Same Line As 某个参数(比如Name):和前面定义的参数Name 取同行的记录。通常用在有关联性的数据上面。
Update value on:
Once 在所有的反复中都使用同一个值 只取一次
each iteration 每次反复都要取新值
each occurrence 只要发现该参数就要重新取值,也就是如果一个action中有多个该参数,每遇到一个就要重新取一个值。
(4)、在脚本中,选中需要参数化的脚本,鼠标右键“使用现有参数”选择对应要参数化的参数名即可。
(5)、在脚本中输出参数化日志信息
//输出参数化日志信息
lr_output_message("登录用户名:%s", lr_eval_string("{username}"));
lr_output_message("登录密码:%s", lr_eval_string("{password}"));
4、关联设置,由于我的LR工具在录制的时设置了关联规则,在脚本中可以使用自动扫描脚本中关联值快捷键Ctrl+F8,扫描结果切换树形视图,可以看到点击“关联”,返回到脚本页面,再次回放脚本,在菜单“视图--测试结果”中可以看到关联函数执行成功。
5、 点设置, 点的设置在菜单“插入-- ”即可, 点名称需顾名思义,看到就能理解。另外需要注意, 点要放在开始事务的前面,思考时间(lr_think_time函数)的后面。
使用函数:lr_rendezvous(" 点名称");
本文标签:
很赞哦! ()
相关教程
图文教程
Discuz的NT控件剖析TextBox
继上篇文章之后大家给了不少的反馈,其中有肯定也有否定的,必定程序设计有很多个性化的东西,因此就会有不同的意见产生。
Discuz管理员前台可以登录后台无法登录怎么办
Discuz管理员前台可以登录后台无法登录的解决方法步骤如下1. 取消ip认证2.管理员用户组变为普通用户组了 进入不了后台3. 后台设置了ip列表导致访问不了后台
discuz美化提升外观和体验的方法
Discuz可以通过美化插件和自定义CSS提升外观和体验。具体方法包括:使用美化插件,如DiscuzPlus、SimpleStyle和ElegantStyle。自定义CSS文件(style.css)编辑关键CSS类,
discuz怎么去掉portal.php的方法
dz去掉portal.php的方法:首先在系统后台的导航设置中将默认的首页设置为“不可用”;然后在程序的根目录的“index.php”中修改内容为“$_E
相关源码
-
pbootcms源码宠物类网站源码下载(自适应多端)为宠物装备商店、宠物食品及用品企业打造的营销型模板,基于PbootCMS内核深度开发。采用响应式设计实现PC与移动端适配,PHP7.0+高性能架构支持MySQL/SQLite双数据库查看源码 -
(自适应响应式)绿色环保防腐木材轻钢别墅建材pbootcms模板下载本模板为环保防腐木材、轻钢别墅建材类企业设计开发,基于PbootCMS内核构建,充分考虑了建材行业的展示需求与产品特点。模板设计风格自然环保,布局清晰合理,呈现建材产品特性与专业优势,帮助访客直观了解产品特点并建立信任感。查看源码 -
响应式帝国cms7.5NBA黑色体育资讯模板下载本模板为体育新闻媒体、报道机构设计,采用帝国CMS7.5内核开发,具备完整的资讯发布、体育日历、数据展示功能。响应式布局确保在手机端呈现实时资讯和图文内容查看源码 -
(自适应响应式)水墨风白酒酿制酒业酒文化酒类产品网站源码下载本模板基于PbootCMS内核开发,为酒类企业打造的水墨风响应式网站解决方案。采用传统东方美学设计语言,呈现白酒文化底蕴,自适应移动端展示效果,数据实时同步更新,助力酒企建立专业数字化形象。查看源码 -
(自适应响应式)WORDwps办公资源教程资讯网站模板下载基于PbootCMS内核开发的响应式网站模板,为办公教程、WPS技巧分享、职场技能培训等场景打造。模板内置标准化文档分类体系,支持图文/视频教程混合展示,满足现代办公知识传播需求。查看源码 -
自适应黑色简繁双语轴承齿轮机械设备制造网站模板该模板为轴承齿轮机械制造企业提供一体化网站建设方案,着重解决行业特有的多语言展示、移动端适配和高效率内容管理需求,帮助企业精准展示产品特性与工艺流程查看源码
| 分享笔记 (共有 篇笔记) |
