51Testing软件测试论坛

标题: QTP中Wait与同步点的区别 [打印本页]

作者: wfq80825    时间: 2006-9-4 14:49
标题: QTP中Wait与同步点的区别
看了论坛上关于这方面的讨论后还是一头雾水,因此特发这个帖子,想再次了解一下。
      同步点的概念中提到当遇到同步点,会暂停脚本的执行直到对象属性获取了预先设定的值,想问这个暂停脚本的执行是什么意思?
      那么在遇到Wait的时候脚本也在等待时间,这个时候可以理解暂停脚本的运行吗?
      就在这个地方我搞不懂Wait与同步点的区别。
作者: yangkinki    时间: 2006-9-4 15:15
同步点是根据系统实际上的运行来进行等待,例如保存后需要N秒后页面才会出现(这个N秒不是固定的),进行下步的操作,那么同步点的作用就是等保存后的页面出现后才进行下步操作;
而wait (M) 中的这个M是固定的M秒时间,当等待了这个M秒时间之后,进行下一步操作
作者: xiaonan    时间: 2006-9-4 15:38
似乎好象这两个的概念在以前的帖子讲到过.那就再讲一遍吧,其实不难理解.
先说wait函数,当脚本走到wait函数时,就开始执行这个函数.如:wait(10),就等待10秒种后再继续执行下面的语句.wait函数的这个等待的时间,那相对来说是比较固定的.如上例子,一定要等待完10秒后再执行.所以写脚本的时候要自己估算一下时间.不然可能造成时间的浪费,或者等待时间的不足.

那同步点呢.等待时间就比较灵活了,它的等待时间是不固定的.设置同步点后,当脚本执行到这句话后,脚本就开始执行等待.脚本会在规定时间内不断的去检查,所同步的对象有没有出现,一但出现,脚本就继续往下执行.不需要等完所有规定时间.如果在规定的时间内,所要同步对象还没有出现,那就提示超时的错误信息.
如:以你们上课的例子为例,我想你们肯定设过这样一个同步点.
Window("Flight Reservation").ActiveX("Threed Panel Control").WaitProperty "text", "Insert Done...", 10000
当脚本执行到这句话时,就开始执行同步等待时间.这里设置超时时间为10000.在这个时间内,脚本会不断去查看该对象的text属性的属性值Insert Done...,有没有出现.一但同步到这个属性值,就开始执行下面的脚本了.而不用再继续等待,直到1000秒结束为止.那这样的话,这个等待时间不用自己去控制,设置好后由程序自己去判断,就比较灵活,也不会出现浪费时间的情况.

[ 本帖最后由 xiaonan 于 2006-9-4 15:43 编辑 ]
作者: walker1020    时间: 2006-9-4 19:19
原帖由 xiaonan 于 2006-9-4 15:38 发表
似乎好象这两个的概念在以前的帖子讲到过.那就再讲一遍吧,其实不难理解.
先说wait函数,当脚本走到wait函数时,就开始执行这个函数.如:wait(10),就等待10秒种后再继续执行下面的语句.wait函数的这个等待的时间,那相 ...


谢谢xiaonan对Wait与同步点的讲解。这下俺对Wait与同步点比以前清楚多了。 不过,我在测试中遇到一个问题,我用 同步点时,QTP 运行到此同步点的下一行代码 时报错: 找不到某某对象;我改为 Wait(5) 后,就没有报错。后来 我干脆就用 Wait 语句了,尽管它可能会浪费一些时间。不过我一直纳闷:这是为什么呢?
作者: maguschen    时间: 2006-9-4 22:41
搭车问个问题啊

我在录制脚本的时候,在某些步骤前面加入了wait (10),但是我发现脚本并没有真的在每个wait (10)的语句都暂停10秒等待,QTP好像可以“智能”识别下一步的对象是否加载完了似的。

我想问,QTP有这种“智能”么?
还有,QTP里面的wait (),有可能在规定的时间之类停止暂停么?例如wait (10),是不是有可能不到10秒这个暂停就结束了啊?

谢谢
作者: yangkinki    时间: 2006-9-4 23:26
楼上说的情况应该不会出现吧,
设置了 wait (10),脚本运行到这里时会等待10秒后才去运行下一步的
作者: xiaonan    时间: 2006-9-5 09:03
4楼,设置的同步点对象报错呢,还是下面脚本中的对象报错.
作者: walker1020    时间: 2006-9-5 09:26
原帖由 xiaonan 于 2006-9-5 09:03 发表
4楼,设置的同步点对象报错呢,还是下面脚本中的对象报错.


是同步点下面脚本中的对象报错,报告:某某对象没有找到。 这个对象是同步点下面的一行代码中的对象。是根据我的经验来判断,肯定是等待的时间不够。后来我用 Wait(5) 就没事了。我感到有点奇怪。
作者: xiaonan    时间: 2006-9-5 09:35
我猜想,可能你的同步信息设置的不合适.
作者: wangyong3552128    时间: 2007-4-3 11:41
你把同步点代码放在报错那行的下面。
作者: chenleafe    时间: 2011-11-1 10:36
是同步点下面脚本中的对象报错,报告:某某对象没有找到。 这个对象是同步点下面的一行代码中的对象。是 ...
walker1020 发表于 2006-9-5 09:26



  请问版主现在waitproperty现在还有这个问题吗?如果解决了,是如何解决的呢?
我现在也是用waitproperty经常也会有这个问题,所以也是干脆用的wait
作者: chenleafe    时间: 2011-11-1 10:37
回复 8# walker1020

请问版主现在waitproperty现在还有这个问题吗?如果解决了,是如何解决的呢?
我现在也是用waitproperty经常也会有这个问题,所以也是干脆用的wait




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2