51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 4701|回复: 6
打印 上一主题 下一主题

[阿七原创-必属精品]脚本网站注册功能详解

[复制链接]
  • TA的每日心情

    2015-9-10 15:08
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    跳转到指定楼层
    1#
    发表于 2011-4-6 14:44:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    本帖最后由 阿七 于 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;
    }
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏1
    回复

    使用道具 举报

  • TA的每日心情

    2015-9-10 15:08
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    2#
     楼主| 发表于 2011-4-6 15:10:47 | 只看该作者
    部分脚本是摘自云层老师的新书. 这个脚本我们可以用到自己各自的网站测试中
    呵呵
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2018-2-28 18:04
  • 签到天数: 40 天

    连续签到: 1 天

    [LV.5]测试团长

    3#
    发表于 2011-4-6 16:20:44 | 只看该作者
    很好的例子。参考使用。谢谢。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4#
    发表于 2011-4-29 22:32:21 | 只看该作者
    路过~  支持斑竹
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5#
    发表于 2011-5-26 15:21:42 | 只看该作者
    学习一下~
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    6#
    发表于 2012-5-23 16:56:52 | 只看该作者
    功能为下,注册的时候,填写用户名后,页面ajax返回判断.用户是否存在,这里就是验证这个功能,用户表用参数化,, ...
    阿七 发表于 2011-4-6 14:44



        请问lr_save_string(lr_eval_string("{username}"),"temp");     //将用户名保存为另外的一个参数
              这里的{username}是哪里来的?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2015-4-7 16:30
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    7#
    发表于 2012-11-6 13:34:11 | 只看该作者
    不错
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-5-10 13:53 , Processed in 0.088687 second(s), 27 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表