51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2656|回复: 13
打印 上一主题 下一主题

[求助] 手动关联的问题,请各位指点一下。

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2013-8-5 15:15:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
录制的脚本可以正常运行。脚本的整体思路是这样。根据手工输入的工号,从数据库中取得ID,再提交结果。我试过不更改手工输入的工号,直接从数据库中取得ID进行参数化,是可以正常运行出结果的。但这样的话,和实际场景有很大差距。
我希望场景更真实些,将手工输入的工号做参数化,将ID做手动关联。但是手动关联的时候,一直没有成功。请教一下大家,为什么会失败,如何解决呢?

web_reg_save_param("id", "LB=\"Name=userids\", \"Value=", "RB=,","Search=headers", LAST);

        web_submit_data("ResUserAction.do_2",
                "Action=http://73.16.17.197:8008/wskp/ResUserAction.do?method=add&flag=U&function_id=26&selects=010127",
                "Method=POST",
                "RecContentType=text/html",
                "Referer=http://73.16.17.197:8008/wskp/system/AddURO.jsp?flag=U&function_id=26&time=20138395056",
                "Snapshot=t80.inf",
                "Mode=HTTP",
                ITEMDATA,
                "Name=partuname", "Value=李英俊", ENDITEM,
                "Name=userids", "Value={id}", ENDITEM, //员工ID
                "Name=partupid", "Value=0101272810", ENDITEM,
                "Name=partrids", "Value=168", ENDITEM, //角色
                "Name=partupname", "Value=一科", ENDITEM,
                "Name=flag", "Value=", ENDITEM,
                "Name=id", "Value=0", ENDITEM,
                "Name=function_id", "Value=", ENDITEM,
                "Name=currentPage", "Value=1", ENDITEM,
                "Name=pageSize", "Value=20", ENDITEM,
                "Name=partrname", "Value=通用查询", ENDITEM,
                "Name=roleids", "Value=168", ENDITEM, //角色
                "Name=partadmin", "Value=否", ENDITEM,
                "Name=partrnames", "Value=否", ENDITEM,
                LAST);

//                lr_output_message("id: %s",lr_eval_string("({id}"));
//                lr_message("When_Txt: %s",lr_eval_string("({When_Txt}"));
                lr_log_message("id :%s" ,lr_eval_string("({id}"));


Action.c(1735): Registering web_url("tj-d.gif") was successful          [MsgId: MMSG-26390]
Action.c(1743): web_concurrent_end was successful, 2496 body bytes, 481 header bytes          [MsgId: MMSG-26386]
Action.c(1746): Registering web_reg_save_param was successful          [MsgId: MMSG-26390]
Action.c(1748): Error -26377: No match found for the requested parameter "id". Check whether the requested boundaries exist in the response data. Also, if the data you want to save exceeds 256 bytes, use web_set_max_html_param_len to increase the parameter size          [MsgId: MERR-26377]
Action.c(1748): web_submit_data("ResUserAction.do_2") highest severity level was "ERROR", 72 body bytes, 186 header bytes          [MsgId: MMSG-26388]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

  • TA的每日心情
    擦汗
    2017-10-27 14:21
  • 签到天数: 306 天

    连续签到: 1 天

    [LV.8]测试军长

    2#
    发表于 2013-8-5 18:01:01 | 只看该作者
    看半天没懂是怎样一个过程?从数据库中取得ID,怎么想都像是一个验证码
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2017-10-27 14:21
  • 签到天数: 306 天

    连续签到: 1 天

    [LV.8]测试军长

    3#
    发表于 2013-8-5 18:01:32 | 只看该作者
    跟踪,答案!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2015-7-13 09:12
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]测试排长

    4#
    发表于 2013-8-6 11:42:44 | 只看该作者
    很明显,这个页面提交后才会返回员工id,而你却在‘提交时’参数化员工id;则根本是本末倒置的
    因为这个页面提交前,你前面那个关联函数保存的{id}根本还没有获得返回值,
    所以这时"Name=userids", "Value={id}", ENDITEM, //员工ID  中的{id}是没有值的,自然失败了
    如果我没猜错的话,这个提交页面不需要参数{id},直接"Name=userids", "Value=", ENDITEM, 就可以了吧;
    你最好把你的原始录制脚本发出来看看
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2022-2-10 10:44
  • 签到天数: 531 天

    连续签到: 1 天

    [LV.9]测试副司令

    5#
    发表于 2013-8-6 14:53:52 | 只看该作者
    脚本看看,最好开下日志,看下交互过程,左右边界 是通过看日志查到的吗?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    6#
     楼主| 发表于 2013-8-6 15:19:19 | 只看该作者
    脚本贴上了,大家帮忙看一下。

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

    x
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2022-2-10 10:44
  • 签到天数: 531 天

    连续签到: 1 天

    [LV.9]测试副司令

    7#
    发表于 2013-8-6 15:25:28 | 只看该作者
    22021300 是工号吧?
    查下你的ID是不是在这个脚本提交之后:
    web_submit_data("UserAction.do_2",
                    "Action=http://192.168.17.197:8008/wskp/UserAction.do?method=select&flag=select",
                    "Method=POST",
                    "RecContentType=text/html",
                    "Referer=http://192.168.17.197:8008/wskp/UserAction.do?method=select&flag=select&function_id=26&time=2013839511",
                    "Snapshot=t75.inf",
                    "Mode=HTTP",
                    ITEMDATA,
                    "Name=userid", "Value=22021300", ENDITEM,
                    "Name=username_zh", "Value=", ENDITEM,
                    "Name=function_id", "Value=26", ENDITEM,
                    "Name=currentPage", "Value=1", ENDITEM,
                    "Name=pageSize", "Value=20", ENDITEM,
                    LAST);
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8#
     楼主| 发表于 2013-8-6 15:46:52 | 只看该作者
    回复 7# szyszy2000


    22021300是工号,在脚本的第444行进行了查询。查询出了ID,ID在第1756行进行使用,我关联的就是这个1756行的ID。
    也就是说,工号是在这个脚本提交之前。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9#
     楼主| 发表于 2013-8-6 16:09:45 | 只看该作者
    回复 6# zb1119


        补充一下:
    工号22021300对应的ID是4676
    工号22021302对应的ID是4983
    工号22021309对应的ID是4998


    444行查询的22021300
    1756行的结果是:"Name=userid", "Value=4676", ENDITEM, (数据库里根据22021300查询出的4676)
    我把4676直接用参数化执行的时候,就直接能运行成功。(直接改成4983,4998等等就可以达到我要求,而不用考虑前面的工号)
    我现在想更真实的把4676手工关联,就提示失败。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2022-2-10 10:44
  • 签到天数: 531 天

    连续签到: 1 天

    [LV.9]测试副司令

    10#
    发表于 2013-8-7 09:23:47 | 只看该作者
    回复  szyszy2000


    22021300是工号,在脚本的第444行进行了查询。查询出了ID,ID在第1756行进行使用,我 ...
    zb1119 发表于 2013-8-6 15:46


    关联是在获得值之前进行注册获取返回值,所以你在444行查出了ID,想在1756行用,那么就在444行之前进行关联
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2015-7-13 09:12
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]测试排长

    11#
    发表于 2013-8-7 09:45:30 | 只看该作者
    首先,1756行不要参数,直接使用原id,运行看看你上面那个关联能不能取到值,若不能则表示左右边界不对
    其次,即使能取到值,你也不能在1756行使用关联参数,因为本页面提交前web_reg_save_param只是注册成功,但还没有取得返回值,不能在本页面使用{id}

    其实最大的可能应该是,这个ids不是在这个页面第一次返回的,如果这个工号是登录用户的工号的话,那么可能是在登录时返回的
    如果不是登录帐号,那么可能是在某一步使用了这个工号的页面返回的(比如在436行那个页面返回的),你去第436行的页面找找它的返回信息
    你应该在第一次返回这个id之前关联,而不是在要使用这个id的时候才关联
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    12#
     楼主| 发表于 2013-8-8 14:11:22 | 只看该作者
    回复 10# szyszy2000


        如果1756直接使用ID,是能取到值的。
    从脚本里搜过,只搜到这一个4676,所以我觉得是第一次出现的。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2015-7-13 09:12
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]测试排长

    13#
    发表于 2013-8-8 15:03:18 | 只看该作者
    回复 12# zb1119


        不是从脚本中搜,而是从生成日志generation log中搜第一次出现的位置,然后定位这个位置对应的页面是哪个;再到对应页面中做关联,如图

    你说id在444行查询的,你就到444行的页面中去找,
    如果你不能确定第一次出现的位置的话,你就在runtime setting打开扩展日志勾选全部,然后回放一次,在回放日志中搜索那个id。右键跳到对应行就是了

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

    x
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    14#
     楼主| 发表于 2013-8-15 14:18:44 | 只看该作者
    回复 13# 398073412


        感谢你的帮助。的确通过generation.log中能查询到4676,可是如何定位这个位置对应的页面呢?
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-9-28 01:26 , Processed in 0.090428 second(s), 29 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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