51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2895|回复: 5
打印 上一主题 下一主题

[原创] 脚本中如何用循环反复刷新某一页面?其中关联的参数会递增

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2008-11-27 11:24:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
web_reg_save_param("RequestId17",
"LB=name='__dmfRequestId' value='",
"RB='>",
"Ord=1",
"RelFrameId=1",
"Search=Body",
LAST);

web_reg_find("Text=ACTIVE",
                "Search=body",
                LAST);
       
web_submit_data("greet.jsp",
"Action=https://branchautomationuat.singaporeconsumer.citigroup.net/webtop_goldenvision/custom/jsp/greet/greet.jsp",
"Method=POST",
"RecContentType=text/html",
"Referer=https://branchautomationuat.singaporeconsumer.citigroup.net/webtop_goldenvision/custom/jsp/welcome/welcome.jsp",
"Snapshot=t16.inf",
"Mode=HTML",
ITEMDATA,
"Name=__dmfFormId", "Value=Greet_0", ENDITEM,
"Name=__dmfAction", "Value=Greet_0_populateTaskGrid", ENDITEM,
"Name=__dmfHandler", "Value=Greet_0_Greet_0", ENDITEM,
"Name=__dmfHandlerArgs", "Value=Greet_0_", ENDITEM,
"Name=__dmfControl", "Value=", ENDITEM,
"Name=__dmfServletPath", "Value=/custom/jsp/greet/greet.jsp", ENDITEM,
"Name=Greet_ddl_gre_search_0", "Value=NRIC", ENDITEM,
"Name=Greet_txt_gre_key_0", "Value={NRIC}", ENDITEM,
"Name=__dmfRequestId", "Value={RequestId14}", ENDITEM,
"Name=__dmfHiddenX", "Value=0", ENDITEM,
"Name=__dmfHiddenY", "Value=0", ENDITEM,
"Name=__dmfFormclass", "Value=com.citibank.northstar.components.greetcomponents.Greet", ENDITEM,
"Name=__dmfNlsclass", "Value=com.citibank.northstar.greetNlsProp", ENDITEM,
"Name=__dmfInitDocbase", "Value=", ENDITEM,
"Name=__dmfInitDocbaseUser", "Value=", ENDITEM,
"Name=__dmfInitDocbasePassword", "Value=", ENDITEM,
"Name=__dmfInitDocbaseDomain", "Value=", ENDITEM,
"Name=__dmfInitLocale", "Value=", ENDITEM,
"Name=__dmfSerialNumber", "Value=7", ENDITEM,
"Name=__dmfClientId", "Value=_new", ENDITEM,
EXTRARES,
"URL=/webtop_goldenvision/custom/theme/citibank/icons/arrow-leftdarkgrey.gif", ENDITEM,
"URL=/webtop_goldenvision/custom/theme/citibank/icons/arrow-rightdarkgrey.gif", ENDITEM,
LAST);

上面是我在某项目中截取的一段代码.在某页面设置的字段检查点”ACTIVE”在controller并发测试时经常会找不到, 于是想加段代码以实现ACTIVE找不到时刷新一次submit请求,直到页面刷新出来找到”ACTIVE”字段为止.
上面关联的参数”RequestId#”会根据每次页面的刷新而递增.比如上面代码中如果ACTIVE找不到,再提交submit请求时,RequestID的Value就不能继续用{RequestID14}了,只能用新抓取的{RequestID17}来替代.其中{RequestID14}已经与上一层省略掉的页面关联.{RequestID17}本来是为下一个衔接的页面做的关联.请教高人如何编写脚本实现这种循环?


[ 本帖最后由 lingxdbc 于 2008-11-27 14:14 编辑 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
 楼主| 发表于 2008-11-27 14:15:29 | 只看该作者
希望大家踊跃讨论一下编写这种脚本的实际应用问题.
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2008-11-27 14:39:21 | 只看该作者
首先问下LZ检查“Active”的目的是什么?其次,用反复刷新页面的方法去得到Active,会不会影响性能测试的结果?最后,能不能简单写一条延迟语句,比如加一个Think time(数值可以设置的大一点,分析的时候也可以很方便的去掉)等到Active出现?

仅供参考,呵呵~~
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2008-11-27 18:25:52 | 只看该作者
原帖由 Athenth 于 2008-11-27 14:39 发表
首先问下LZ检查“Active”的目的是什么?其次,用反复刷新页面的方法去得到Active,会不会影响性能测试的结果?最后,能不能简单写一条延迟语句,比如加一个Think time(数值可以设置的大一点,分析的时候也可以很方 ...

检查点是为了判断这个页面的响应状况是否正常. 事实上因为LR对的Pass的理解与我们对Pass的理解不一样,造成有些页面不能够完全正常显示却能够Pass的现象.  
这个项目中几乎每个主要页面都设置了类似检查点,脚本在VUGen中反复迭代回放没有任何问题.但在Controller中多用户并发时总是会有部分虚拟用户不能通过,比如8个Vuser总会有3-5个Fail掉.Log显示就是在上面这个检查点上出的问题,不能找到对应的字段.
初步判断是源程序中对于并发的支持有问题,但条件不允许去优化程序或其他.所以目前想用循环刷新的方式让这段容易报错的页面通过测试,然后再在结果中做详细说明.Think time数值已经试过设的很大,但效果不明显.
只能寄希望于反复提交Query来得到正确的响应了.

[ 本帖最后由 lingxdbc 于 2008-11-27 18:27 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2008-11-28 15:44:20 | 只看该作者
顶一下看有回复吗.
回复 支持 反对

使用道具 举报

  • TA的每日心情
    奋斗
    2015-6-25 18:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    6#
    发表于 2008-11-28 17:19:16 | 只看该作者
    写一个while循环,应该可以轻松搞定这个问题吧
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-20 04:37 , Processed in 0.065214 second(s), 25 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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