51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 4136|回复: 15
打印 上一主题 下一主题

[原创] 判断某窗口是否存在,脚本运行时间过长。

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2010-7-30 17:54:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在脚本中使用exits判断某窗口是否存在。当其不存在时,脚本大概要等30S左右才进行下一步。使用了exits(timeout)语句,也没有得到改善。请问有没有别的能够节约时间的方法啊?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2010-7-31 15:18:22 | 只看该作者
使用了exist(timeout)语句也没改善,说明不是因为exist的问题

你的exist都打错
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2010-7-31 21:35:32 | 只看该作者
这个时间是没办法加快的,除非是指定的对象提前出来
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2018-4-22 12:50
  • 签到天数: 393 天

    连续签到: 1 天

    [LV.9]测试副司令

    4#
    发表于 2010-7-31 22:24:44 | 只看该作者
    楼主可以试一下两种方法
    1,是在option里有个可以设置脚本运行超时时间的
    2,将运行模式设置为fast
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5#
    发表于 2010-8-2 09:50:17 | 只看该作者
    使用 exist(timeout) 需要确保上一层对象存在,否则就会出现等待超长时间的情况
    如果不能确保,就一层层exist判断
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    6#
     楼主| 发表于 2010-8-3 09:39:17 | 只看该作者

    回复 5# 的帖子

    那你的意思是如果脚本中存在Browser、Page、Frame、weblist几层对象,需要对这几层对象分别用exist来判断?脚本不是会很复杂?
    IF BROWSER(BROWSER).EXIST THEN
      IF BROWSER(BROWSER).PAGE(PAGE).EXIST THEN
        IF BROWSER(BROWSER).PAGE(PAGE).FRAME(FRAME).EXIST THEN
           IF BROWSER(BROWSER).PAGE(PAGE).FRAME(FRAME).WEBLIST(WEBLIST).EXIST THEN
    是不是这样?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7#
    发表于 2010-8-3 10:54:52 | 只看该作者
    之前我就是这么做的,必要的地方做一下就行,也不用都这样,如果前面的操作不对上层对象比如browser、page有影响,通过前面的操作,原来在的还是在,不在的还是不在(看脚本逻辑了),那么就用上EXIST(0),执行速度上基本没什么影响的,也避免了卡住的情况

    BROWSER(BROWSER).PAGE(PAGE).FRAME(FRAME).WEBLIST(WEBLIST).EXIST
    整句解析时,QTP会先找上层对象的
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2017-3-3 10:21
  • 签到天数: 4 天

    连续签到: 1 天

    [LV.2]测试排长

    8#
    发表于 2010-8-3 11:00:30 | 只看该作者
    1、要确认这个窗口的出现与否,是否影响下一步的执行?
    2、如果不影响,直接可以执行下一步,可以在脚本中加一个计时器+公共变量(timeout),例如:
    dim time_out
    time_out=10    '以秒为单位,可以放到公共变量中
    time_tag=Time()    '开始计时
    Do While (Time()-time_tag)*24*3600 < timeout
         ....
    Loop
    当然,也可以通过设置qtp setting,缩短判断对象是否出现的时间(File-Setting-Run)
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9#
    发表于 2010-8-3 14:30:29 | 只看该作者

    回复 1# 的帖子

    object.exist(5)  这个是5秒,是强制等待2秒,静态的,即使第2秒已经判断出存在对象,那么依然需要等待5秒钟后才运行

    用object.waitproperty("visible",true,10000) 这个是动态等待,10000是毫秒,1000毫秒内只要判断出对象存在,就立即跳转

    会快点
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    10#
     楼主| 发表于 2010-8-3 14:35:14 | 只看该作者
    现在的问题是,对页面的“返回”按钮设置检查点,判断之前的页面上的某个窗口或者某个输入框是否存在,若存在则FAILED,不存在才PASS。它不存在,用EXIST判断要等大概30秒,用“visible”来判断,也要等差不多这么长时间。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    11#
    发表于 2010-8-3 14:52:57 | 只看该作者

    回复 9# 的帖子

    2种方式是一样的。。。exist是属性集合而已。都是只要不存在就等。。。。到设置的超时参数为止



    楼上几位。。。随便找个页面验证下就知道了,下面的代码,把浏览器全关掉,那个叫慢。。。那样应该就能明白楼主的意思了,楼主就一层层来吧

    If Browser("百度一下,你就知道").Page("百度一下,你就知道").WebButton("百度一下").Exist(0) then
            msgbox  1
    else
            msgbox 2
    end if
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    12#
     楼主| 发表于 2010-8-3 17:02:48 | 只看该作者
    一层一层地判断也试过了,还是很慢。Setting初始的值是20,算了一下,大概要等30S;改成1之后,等7秒左右。这个是目前最省时的方法。就是不晓得在脚本里边改应该怎么弄。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    13#
    发表于 2010-8-3 18:02:53 | 只看该作者

    回复 12# 的帖子

    那就用 exist(0) 吧

    其实只要逻辑清楚,才4层最多等1、2秒
    外层不存在里面就都不存在了,而存在的话exist是不会等待的
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    14#
     楼主| 发表于 2010-8-4 14:59:24 | 只看该作者

    回复 13# 的帖子

    存在当然不需要等待,但问题是不存在的嘛。用exist(0)也要等大概30S
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    15#
    发表于 2010-8-4 15:12:48 | 只看该作者
    for i=1 to 30
          If Browser("百度一下,你就知道").Page("百度一下,你就知道").WebButton("百度一下").Exist(1) then
             exit for
    next

    判断一下,如果存在就跳出循环
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    16#
    发表于 2010-8-4 15:14:32 | 只看该作者

    回复 14# 的帖子

    你自己6楼的帖子就是答案,换成 exist(0)。。。不会等
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-9-23 02:48 , Processed in 0.088004 second(s), 28 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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