51Testing软件测试论坛
标题:
[阿七原创-必属精品]脚本网站注册功能详解
[打印本页]
作者:
阿七
时间:
2011-4-6 14:44
标题:
[阿七原创-必属精品]脚本网站注册功能详解
本帖最后由 阿七 于 2011-4-6 14:55 编辑
功能为下,注册的时候,填写用户名后,页面ajax返回判断.用户是否存在,这里就是验证这个功能,用户表用参数化,,取值后给提示,循环到用户名可以注册就退出循环.
Action()
{
//阿七编写,转载请注明!!!
/*总体思路: 打开网站,建立循环(循环的用途为重复取参数化的用户名,里面再做1个嵌套主要是单个用户名的遍历),期间自动关联出服务器返回的代码来作为退出循环的依据.
然后把参数传递给注册页面的用户参数,标注为事务成功.
*/
/*用到的函数有:
web_url //根据函数中的URL属性加载对应的URL,不需要上下文
while //(条件为真) {执行代码}
for // (参数初始化;参数的取值范围;参数的递增方式) {执行代码}
lr_save_string("hello world","param"); //将hello world赋值给param的参数
lr_eval_string("{param}"); //获取参数的值并且转化成string类型
strlen //返回字符串的长度
lr_start_transaction //事务开始
lr_end_transaction //事务结束
web_reg_save_param("参数","左边界","右边界","顺序个数","搜索范围",last); //截取代码放入参数
lr_save_var //被截取对象,截取长度MAX_NAME_LEN, 起始位置,赋值给参数"ShortName"
atoi //把字符串转换成整型数
strcmp(s1,s2) //比较字符串s1和s2。 当s1<s2时,返回值<0 当s1=s2时,返回值=0 当s1>s2时,返回值>0 (串自左向右逐个字符相比(按ASCII值大小相比较),
web_submit_data //填写代提交的页面信息.调入参数化的数据到页面
web_reg_find // 建立检查点,返回0,1给参数,存在为1,不存在为0. SaveCount=参数
*/
Int ajaxresult; //定义返回的结果类型
Int strLens; //定义字符串长度
ajaxresult=1;
web_url ("192.168.0.7", //名字随意定
"Url=http://192.168.0.7/", //访问的网站首页
"TargetFrame=",
"Resource=0",
"ResContentType=text/html",
"Referer=",
"Snapshot=t1.inf", //截图
"Mode=HTML",
EXTRARES, //网站的组成部分链接
LAST);
web_url ("注册", //名字随意定
"Url=http://192.168.0.7/regedit.aspx", //访问的网站首页
"TargetFrame=",
"Resource=0",
"ResContentType=text/html",
"Referer=http://192.168.0.7/",
"Snapshot=t2.inf", //截图
"Mode=HTML",
EXTRARES, //网站的组成部分链接
LAST);
while (ajaxresult=1) //用初始的1来接引循环开始 字符串遍历结束后,如果状态为1,则继续循环.0表示数据库没有该用户,可以注册
{
lr_save_string(lr_eval_string("{username}"),"temp"); //将用户名保存为另外的一个参数
if (strcmp(lr_eval_string("{temp}"),"-")==0) //判断用户名是否取完,如果用户名为"-",则表示已经没有下一个用户名了,脚本结束
{
return 0;
}
for (strLens=1;strLens<=strlen(lr_eval_string("{temp}"));strLens++) //获取用户名字符串长度并且遍历
{
lr_save_var(lr_eval_string("{temp}"),strLens,0,"ajaxresult"); //逐个分割字符串
lr_start_transaction("ajax"); 定义一个ajax的事务开始
web_reg_save_param("ajaxst",//建立关联,获取返回的正确/错误的代码存入ajaxst字段中
"LB=<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<result>",
"RB=</result>",
"Ord=1",
"Search=NoResource",
LAST);
web_url ("ajax.aspx", //名字随意定
"Url=http://192.168.0.7/ajax.aspx?t=checkusername&username={ajaxstr}", //设置网站用户的参数化
"TargetFrame=",
"Resource=0",
"ResContentType=text/html",
"Referer=http://192.168.0.7/regedit.aspx",
"Snapshot=t3.inf",
"Mode=HTML",
EXTRARES, //网站的组成部分链接
LAST);
ajaxresult=atoi(lr_eval_string("{ajaxst}")); //将关联结果转化为变量
if (ajaxresult==0||ajaxresult==1) 判断事务的状态
{
lr_end_transaction("ajax",LR_PASS);
}
else
{
lr_end_transaction("ajax",LR_FAIL);
}
}
}
lr_think_time(10); 休息10秒
lr_start_transaction("reg"); 当用户名可以使用时进入注册事务流程
web_reg_find("Search=Body", //检查点函数,检查页面是否有"注册成功"的字样
"SaveCount=regst",
"Text=注册成功",
LAST);
web_submit_data("register.aspx",
"Action=http://192.168.0.7/regedit.aspx?createuser=1", //填写代提交的页面信息.调入参数化的数据到页面
"Method=POST",
"TargetFrame=",
"ResContentType=text/html",
"Referer=http://192.168.0.7/regedit.aspx",
"Snapshot=t4.inf",
"Mode=HTML",
ITEMDATA,
"Name=username","Value={temp}",ENDITEM,
"Name=password","Value={password}",ENDITEM,
"Name=password2","Value={password2}",ENDITEM,
"Name=email","Value={email}",ENDITEM,
"Name=submit","Value=创建用户",ENDITEM,
其他信息 "Name=username","Value={temp}",ENDITEM,
LAST);
if (atoi(lr_eval_string("regst"))>=1) 判断注册用户的最终状态
{
lr_end_transaction("reg",LR_PASS);
}
else
{
lr_end_transaction("reg",LR_FAIL);
}
return 0;
}
作者:
阿七
时间:
2011-4-6 15:10
部分脚本是摘自云层老师的新书. 这个脚本我们可以用到自己各自的网站测试中
呵呵
作者:
archonwang
时间:
2011-4-6 16:20
很好的例子。参考使用。谢谢。
作者:
smile665
时间:
2011-4-29 22:32
路过~ 支持斑竹
作者:
南勃万
时间:
2011-5-26 15:21
学习一下~
作者:
yolanda_ji
时间:
2012-5-23 16:56
功能为下,注册的时候,填写用户名后,页面ajax返回判断.用户是否存在,这里就是验证这个功能,用户表用参数化,, ...
阿七 发表于 2011-4-6 14:44
请问lr_save_string(lr_eval_string("{username}"),"temp"); //将用户名保存为另外的一个参数
这里的{username}是哪里来的?
作者:
kerryliyan
时间:
2012-11-6 13:34
不错
欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/)
Powered by Discuz! X3.2