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