51Testing软件测试论坛

标题: 关于QTP中ChildObjects()使用时的一点困惑,望高手解惑一下 [打印本页]

作者: gldd5656    时间: 2010-8-20 11:34
标题: 关于QTP中ChildObjects()使用时的一点困惑,望高手解惑一下
我写了一段QTP脚本用于识别当前页面上最上层的IE弹出窗口,脚本如下:

Set des=description.Create()
des("Class name").Value = "Window"   
des("enabled").Value =True                                                        '状态为激活的
set dobj=desktop.ChildObjects(des)                                         '在桌面对象中查找
print dobj.count
后发现在增加了  des("enabled").Value =True   以后一个对象都找不到了

进一步实验:

Set des=description.Create()
des("Class name").Value = "Window"
'des("enabled").Value =True
set dobj=desktop.ChildObjects(des)
print dobj.count
For i=0 to dobj.count-1
        If dobj(i).GetROProperty("enabled") Then  '如果对象的enabled属性为True则
print "enabled="&dobj(i).GetROProperty("enabled")&"    "&dobj(i).GetROProperty("foreground")&"    "&dobj(i).GetROProperty("focused")&"       "&i&"    "&dobj(i).GetROProperty("text")
        End If
Next

这时可以找到我所期望的对象

这样我就困惑了 为什么在ChildObjects筛选时我增加了enabled属性一条都找不到
而在筛选后用IF过滤enabled属性 就可以找到对象了


PS:我写上面的脚本是为了能得到当前单Browser下IE有多层模态窗口弹出时获得最顶层页面对象,以便直接操作最顶层页面中内容,目前想识别最顶层的页面,如果有好的方法还请高手指点指点 呵呵
作者: TIB    时间: 2010-8-20 14:17
这个我觉得应该是QTP的bug
作者: walker1020    时间: 2010-8-20 16:44
请楼主把  des("enabled").Value =True
改为  des("enabled").Value ="True"
后再试试。
作者: gldd5656    时间: 2010-8-23 09:47
标题: 回复 3# 的帖子
des("enabled").Value ="True"

尝试过了,还是一个对象都找不到,
不知道这个是不是QTP的BUG 或者 还是我的用法不对~~

作者: JonnyGu    时间: 2010-8-23 09:58
不会啊,我试过可以啊,LZ不会用的是PJ版的吧
作者: skyzhu    时间: 2010-8-23 10:35
可以用的,true  ,  -1  都行
可能是系统一些自启动被关掉了,比如 shhook class之类的影响了,或者版本问题
作者: vernzhang1980    时间: 2010-8-23 15:55
楼主还是用SPY自己看一下,runtime属性里的到底有没有enable属性,如果有它的值是不是true还是1或者-1什么的,如果都没错,那就没办法了! 
作者: gldd5656    时间: 2010-8-27 08:33
标题: 回复 5# 的帖子
自己研究学习 用的是10.0 PJ版  这个PJ版会导致这样的问题么?
作者: lvdongstar    时间: 2010-8-27 10:17
版本问题,9.2版本能正常运行,得出结果,10.0的就不行
作者: feiyunkai    时间: 2010-8-27 10:19
des("enabled").Value =True 修改为:des("enabled").Value ="-1"   '注:-1为True,0为 False
作者: lvdongstar    时间: 2010-8-27 10:24
你在10.0版本上试过?10.0上还是不行的
作者: gldd5656    时间: 2010-8-27 13:55
标题: 回复 10# 的帖子
果然 des("enabled").Value =True 修改为:des("enabled").Value ="-1"   '注:-1为True,0为 False

这样改完以后 找到的有效对象果然都是一样的       enabled     -1为True,0为 False  这个很奇妙啊
我们一般的情况下不是 0为False 其他值为True么?
作者: 474241558    时间: 2010-8-27 16:06
标题: 回复 1# 的帖子
通过标题呢,若标题固定,可以通过标题识别这个窗体。
作者: 忆の海    时间: 2011-5-12 11:01
学习了
作者: shanfeng1419    时间: 2011-5-13 09:06
顶下
作者: zouping    时间: 2011-5-13 14:58
看帖必回
作者: hwm831002    时间: 2011-5-13 15:37
学习受教了




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