QTP 同步等待问题

上一篇 / 下一篇  2009-01-08 22:31:16 / 个人分类:QTP

    在自动化测试中,同步等待也是一个很重要的问题,特别是Ajax的出现,使这个问题更为复杂.做过自动化测试的都清楚,要对测试对象操作的前提是对象已存在甚至是可见,否则就可能出错,甚至脚本运行不下去. 这也是自动测试执行中较为常见的脚本错误之一.现在总结下QTP的几个同步等待方法.

    1>对象的默认等待时间. 运行QTP脚本过程中要对某个对象进行操作时, QTP会根据对象库中对象的属性或是对象描述的属性对进行搜索此对象,如果在一段时间内仍未找到相应对象则认为些对象不存在.而这个时间则是对象的默认等待时间.可以在File-->Settings-->Run-->Object synchronization中设置,默认时间是20秒.

    2>对象的Exist属性.每个对象都会有Exist属性以判定些对象是否存在,其可以设置一个参数即是等待时间,在这个时间进行对象搜查. 使用注意1: 这是个对象属性而不是对象方法,其会有个返回值,当然是布尔值了.所以不能将"Browser("百度一下,你就知道").Page("百度一下,你就知道").WebEdit("wd").Exist(5)"作为一个语句,必须接受其返回值,不然会提示引对象不支持此方法. 使用注意2: 其参数是秒而非QTP tutorial上提示的毫秒,别被忽悠了.

    3>对象的waitProperty ("property","expectVaue",timeout)方法.几乎每个对象都有这个方法,此方法是指在timeout时间内等待此对象的某个属性值为期望值.如果在timeout内属性期望值出现则立刻执行下一步否则等待timeout. 注意此也是QTP设置同步点的方法:在录制状态下,选择Insert-->Synchronization Point,选择要同步的对象,设置要同步的属性则可设置一个同步点了.

    4>Synce方法.这个是WEB中专用的,主要用于页面载入时.使用范围较小但简单实用.

    5>wait方法,也被形象戏称为"死等大法".即是执行到这一步时暂停执行脚本,然后等待一段时间,时间满后继续执行下一步.Wati(timeout),此方法的唯一参数当然是等待时间了,它由秒跟毫秒组成.

    大概来说QTP有5种同步等待方法,实际中运用哪个就要看具体情况了,我的建议也是按上面的顺序...

 


TAG: QTP

疯狂菜鸟 引用 删除 dohu123   /   2009-11-15 17:01:33
原帖由june.diny于2009-11-13 14:47:16发表
以WaitProperty为中心,结合Sync&Exist方法还是不错的

对,没有绝对,适合才重要!
June.Diny 引用 删除 june.diny   /   2009-11-13 14:47:16
以WaitProperty为中心,结合Sync&Exist方法还是不错的
疯狂菜鸟 引用 删除 dohu123   /   2009-08-18 11:02:43
我觉得对于一般的web应用,用页面加载完成与否来判断还是可以的。但对于较多用ajax 方面的东西的应用判断页面加载完成与否基本上没有作用。所以我还是比较推荐waitProperty 方法。当然了,合适最重要,能达到相应效果即可。
萧萧枫林的个人空间 引用 删除 onlonely   /   2009-07-23 09:20:36
对于WEB类测试来说,最重要的就是等待页面加载完成.
那么根据IE 的DOM对象来等待,将是比较完美的.
因为wait方法无法预估时间,
waitProperty 方法,无法分辨页面是否还在加载中
Exist方法同样无法判断页面是否加载完成(因为没有加载完成时候的WEB页面常常是不能进行操作的.)
 

评分:0

我来说两句

Open Toolbar