51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2962|回复: 8
打印 上一主题 下一主题

[原创] 请教一段有关登陆的LR脚本问题

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2008-4-1 11:35:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
登陆脚本如下IP和帐号内容代替为xxx)

#include "web_api.h"
Action()
{
        web_url("xxxx",
                "URL=http://xxx.xxx.xxx.xxx:xxxx/xxxx",
                "TargetFrame=",
                "Resource=0",
                "RecContentType=text/html",
                "Referer=",
                "Snapshot=t1.inf",
                "Mode=HTML",
                LAST);

        web_submit_data("login;jsessionid=76B27DF06C79E1A31399A138ED94F1CE",
                "Action=https://xxx.xxx.xxx.xxx:xxxx/login;jsessionid={JSESSIONID2}",
                "Method=POST",
                "TargetFrame=",
                "RecContentType=text/html",
                "Referer=",
                "Snapshot=t2.inf",
                "Mode=HTML",
                ITEMDATA,
                "Name=username", "Value=user", ENDITEM,
                "Name=password", "Value=passwd", ENDITEM,
                "Name=rand", "Value=3768", ENDITEM,
                "Name=lt", "Value=_cAE71270E-E8C1-7363-7922-93DE3C75E3B4_k309245EF-3A2B-A7B9-564A-C4E3C870DBAD", ENDITEM,
                "Name=_eventId", "Value=submit", ENDITEM,
                "Name=submit", "Value=登录", ENDITEM,
                LAST);

        web_reg_find("Text=verifycode",
        LAST);

/*
//检查登录结果
                if("Text=verifycode")
                   {
              lr_output_message("登录成功啦!");
        }
        else
                {
              lr_error_message("登录失败啦!");
                }
*/
                return 0;
}

执行结果老是报:
"Error -27257: Pending web_reg_find request(s) detected and reset at the end of iteration number 1"
请高手指点一下迷津,先谢谢啊

另外我注释的那段if判断好象也有点问题,希望能帮我指明一下...
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

  • TA的每日心情
    奋斗
    2015-11-17 09:09
  • 签到天数: 7 天

    连续签到: 1 天

    [LV.3]测试连长

    2#
    发表于 2008-4-1 13:06:24 | 只看该作者
    1.  把这段代码  web_reg_find("Text=verifycode",        LAST);放在web _submit_data之前;
    2.  web_reg_find("Text=verifycode",        LAST);这个函数的目的是查找文本为“veryfycode”的文本数据,并不是把“veryfycode”赋值到“text”中。
    如果需要通过打印输出数据,判断执行情况,可以增加并修改如下代码:

    int i;
    i = web_reg_find("Text=verifycode",
            LAST);
    web_submit_data("login;jsessionid=76B27DF06C79E1A31399A138ED94F1CE,。。。。);

    //检查登录结果
    if(i ==0)
                       {
                  lr_output_message("登录成功啦!");
            }
            else
                    {
                  lr_error_message("登录失败啦!");
                    }

    ******************************************************
    谢谢楼下,说的极是!

    [ 本帖最后由 gp_jl 于 2008-4-2 08:43 编辑 ]
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3#
    发表于 2008-4-1 14:08:47 | 只看该作者
    楼上的是不是有点小错误。
    i=web_reg_find("web_find",
                    "What=广州公交数据中心升级改造综合管理系统",
                    LAST);
            if(i==0)
                    {
                            lr_output_message("登录成功");
                    }
            else
                    {
                            lr_output_message("登录失败");
                    }
    返回值为零的时候才是成功吧
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4#
    发表于 2008-4-1 18:46:44 | 只看该作者
    web_submit_data("login;jsessionid=76B27DF06C79E1A31399A138ED94F1CE",

                    "Action=https://xxx.xxx.xxx.xxx:xxxx/login;jsessionid={JSESSIONID2}",
                    "Method=POST",
                    "TargetFrame=",
                    "RecContentType=text/html",
                    "Referer=",
        .........


    web_find("check_text",
         "what=verifycode",
               LAST);

    楼主可以试试这样,web_find函数也可以检查页面的返回值,回放脚本LR会自动进行比对以判断是否找到了你要找的值.用这个函数时,你要找的verifycode在返回的页面最好唯一.
    哦,别忘了runtime-setting-->preferences-->checks下的Enable image and text check 前打上勾就可以了.
    另外说一句web_reg_find函数的执行效率,适用范围都优于web_find,是web_find函数的替代 者.楼主可以根据实际的情况在脚本中选用.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5#
    发表于 2008-4-1 19:08:51 | 只看该作者
    看楼主录制的代码中有动态的sessionID。对于这样的web系统进行,性能测试的时候,需要进行参数化。动态获得sessionID的方法,可以在录制的脚本的时候,把log打卡。录制完之后在相关路径下打开录制log。log中所有所有和服务器交互的信息。把你录制脚本中的sessionid,就是特别长的那一串数,在log总搜索。找到相应地方,找到左边界和右边界,然后用函数返回这个值。这样就可以动态获得sessionid。登录就不会报错了。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    6#
    发表于 2008-4-2 09:36:15 | 只看该作者
    整个脚本问题比较多的,首先登陆的问题和楼上说的一致,必须要用关联得到sessionid,才能确保登陆脚本的运行成功,其次在使用web_reg_find()函数的时候有比较严重的错误
    1.web_reg_find()应该放在web_submit_data()以前
    2.web_reg_find()函数写错了,

            web_reg_find("Search=Body",
                    "SaveCount=checklink",
                    "Text=hello world",
                    LAST);
    SaveCount这个说明查询结果放在哪个变量中,如果没有查询到hello world那么checklink=0否则查到几个checklink就是几

    然后你就可以根据这个来判断了
        if(checklink==0)
                    {
                            lr_output_message("登录成功");
                    }
            else
                    {
                            lr_output_message("登录失败");
                    }
    其实我们一般不用lr_output_message来配合,比较好的方法是通过事务来确认是否是所期望的结果,请参考手动事务的相关文章
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7#
    发表于 2008-4-2 11:08:35 | 只看该作者
    都是高人 学习
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8#
     楼主| 发表于 2008-4-15 00:39:32 | 只看该作者
    谢谢各位啊,问题我已经自己摸索来解决了...很谢谢大家!!!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9#
    发表于 2008-5-20 09:12:03 | 只看该作者
    请问一下LZ,你的解决方法是什么,我也遇到了相同的问题,好像是在出错后的interation number没初始化导致的,重启电脑就好了。
    请指教~~~
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-25 05:34 , Processed in 0.074334 second(s), 28 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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