Chain.Dai.China 发表于 2010-7-6 09:02:01

Browser.sync 和 page.sync有什么区别啊?

Browser.sync 和 page.sync有什么区别啊?
有人说Browser.sync是等待frame加载完,而page.sync不会。那是不是无论什么时候都应该用Browser.sync,因为它保险一点?

克彻巴彦 发表于 2010-7-8 00:09:31

他们打不部分时候是没有区别的

Browser.sync:当IE状态栏显示 Done 后才进行下一步
page.sync:当页面完成加载之后才进行下一步
当状态栏显示Done后 页面往往也加载完毕
所以大部分时候他们看不出什么区别

但是有些时候还是会有区别,这个却别就是当同时使用了Browser.sync和page.sync后,qtp完成这两步之后,发现页面仍然没有加载完毕。

这是可以采用判断页面某个特殊的object 是否存在或visible属性为True时再进行下一步

如:
Dim Count
Count=0
Do while count<>5
If Browser().Page().object().GetROProperty("visible")=True Then
Count=5
Else
Count=Count+1
wait 10
End If
Loop


如果执行了上述语句,页面仍然没有加载完毕,那么可以怀疑页面加载除了问题

yujie6832 发表于 2010-7-8 10:00:52

呵呵,楼上正解,鲜花:lol

crowsong 发表于 2010-7-8 11:01:24

学习了,:)

Chain.Dai.China 发表于 2010-7-8 13:37:45

谢谢二楼,不过你这么一说,让我觉得很没有安全感了:lol

JonnyGu 发表于 2010-7-8 16:22:13

一般情况下,这两种随便用,不要没有安全感:lol

克彻巴彦 发表于 2010-7-8 17:19:01

多谢跟帖

谢谢大家跟帖,小弟刚刚来到这个论坛,以后大家多多交流:) :) :victory:

克彻巴彦 发表于 2010-7-8 17:20:17

不要没有安全感

一般情况下,qtp自带的函数和方法都很好用,不好用时可以考虑其他方法

JonnyGu 发表于 2010-7-9 14:37:02

不过有时候的确sync执行完之后,其实页面还没有加载完,而接下来的页面可能是任何一个页面,所以判断下一个页面的对象也不可行(因为是一个common的函数,所以不好判断)

克彻巴彦 发表于 2010-7-9 17:40:44

如是使用commen的函数 有方法

使用commen的函数处理每个新加载页面的同步问题时,可以获取IE object对象,利用IE 自带的busy属性和Readystate属性循环判别IE是否加载完毕,未加载完毕,等5秒 ;加载完毕跳出循环。可以试一下

JonnyGu 发表于 2010-7-12 15:10:23

这个原理是不是和sync一样的啊?
可能sync本身就是用的这个方法哈哈。

克彻巴彦 发表于 2010-7-12 17:41:51

sync

如楼上所说 原理是一样的呵呵

我想说的是重写sync 同时加上“标志性对象判断”方法 会使页面更加稳定

JonnyGu 发表于 2010-7-14 10:48:34

IE.Busy为false,但是IE.readystate却一直为0,不是4?

克彻巴彦 发表于 2010-7-14 13:01:19

回复 13# 的帖子

IE.readystate=4 时才表明IE 加载完毕如果一直为0   是否页面加载有错误提示呢?

JonnyGu 发表于 2010-7-14 16:18:36

改成 READYSTATE_COMPLETE 就行了。
页: [1]
查看完整版本: Browser.sync 和 page.sync有什么区别啊?