麻烦大虾们看看同一个语句,两种写法为什么执行速度不一样
下面这个执行的时间是不到1秒SetDesc = Browser("creationtime:=0").Page("index:=0")
IfDesc.Frame("html id:=contentIframe").Link("name:="&twoLevel,"index:="×).Exist(2) Then
下面这个执行的时间是5秒半
Set Desc = Browser("creationtime:=0").Page("index:=0").Frame("html id:=contentIframe").Link("name:="&twoLevel,"index:="×)
IfDesc.Exist(2) Then
为什么同样是判断一个页面是否存在的语句,排列方式不一样,就会有5倍时间的差距? :funk:不会吧.... 是下面的慢,对象解析次数多,但不应该慢这么多 本帖最后由 lantianwei 于 2010-10-25 15:36 编辑
没有做过试验,假设LZ的观点是正确的,那么我的个人观点是:
SetDesc = Browser("creationtime:=0").Page("index:=0")‘进行对象匹配,但仅解析2层并返回一个对象
IfDesc.Frame("html id:=contentIframe").Link("name:="&twoLevel,"index:="×).Exist(2) Then ’进行对象匹配,其实还是从头到尾进行解析,共解析了4层
Set Desc = Browser("creationtime:=0").Page("index:=0").Frame("html id:=contentIframe").Link("name:="&twoLevel,"index:="×) ‘进行对象匹配,对4层全部进行了解析,并返回一个对象
IfDesc.Exist(2) Then ’再一次进行对象匹配,但依然是对4层对象全部进行了解析
从上面的分析可以看出,1比2少解析了2层,所以2的时间会多
综述,所以上面两个种语句的执行速度应该不是绝对的5倍,即使在同一台电脑上,也可能是不一样的,而是依赖于被测对象的复杂程度,这里主要指Frame("html id:=contentIframe").Link("name:="&twoLevel,"index:="×)的复杂程度,也就是说在其父对象下有多少对象,需要花费多少时间来找到目标对象
以上仅个人观点,小虾米欢迎大虾拍砖~ 我觉得,楼上说的很有道理,QTP做解析的时候,是按照对象的层次进行的。对象层次越多,所需要的时间就越长。。 想不通 ,应该还是你对象属性的问题.5秒本身就不太正常...不会有这么大的差异,尝试关掉你的一些程序只开浏览器和QTP测试一下. 很感谢各位的指导~:)对我帮助很大!
我那个页面确实对象很多,我用SPY找都要找很久才能定位到我需要的确切对象,
我是一边用QTP执行脚本,一边用秒表计时,可能有时间差,这两句中的Set那行执行的都很快,区别就在IF那行,时间差很多,我再试试看看简单的页面,然后只开浏览器和QTP:),看这两句会不会有很大的差别。
再次感谢站友们~:)
页:
[1]