here556 发表于 2010-12-28 10:47:15

使用Description.Create()出现的问题

我通过Description.Create()来识别对象,代码如下:
Set myDescription = Description.Create()
myDescription("micclass").Value = "WebEdit"   
set Lists = Browser("title:=ServiceUi").Page("title:=ServiceUi").Frame("html id:=outputView").ChildObjects(myDescription)
希望通过WebEdit的属性来获得所有WebEdit,首先我先去要识别的对象所在的页面获得识别对象的所有属性,如截图,但是发现有些属性能够识别对象,比如
myDescription("name").Value = "WebEdit"   
而有些就不能,比如Class Name,我使用myDescription("Class Name").Value = "WebEdit"就不能识别,可是Class Name属性在该对象的属性里明明有啊,这是为什么?我在通过name识别了该对象后通过Lists(i).GetROProperty("Class Name")显示Class Name为空值。而且在使用过程中发现一个奇怪的问题,就是我昨天晚上在使用myDescription("micclass").Value = "WebEdit"   时,会识别出很多对象,有些并不是WebEdit,而且把这句话注释掉后直接使用如下代码还是可以,非常奇怪,但是今天再试就可以唯一识别WebEdit对象了,不知道别人有没有遇到过类似问题,还是我的QTP版本有问题,我使用的是QTP9.2
Set myDescription = Description.Create()
'myDescription("micclass").Value = "WebEdit"   
set Lists = Browser("title:=ServiceUi").Page("title:=ServiceUi").Frame("html id:=outputView").ChildObjects(myDescription)

my_way 发表于 2010-12-28 15:32:40

本帖最后由 my_way 于 2010-12-28 15:34 编辑

其实没必要每次都通过ChildObjects来获取页面或者frame下面的所有子对象,再筛选要用的对象。
你也说过了可以通过myDescription("name").Value = "WebEdit"   来识别该对象,就说明name这个属性是唯一标识改对象的属性之一(唯一标识对象的属性有可能是多个)。那么就可以通过:
Set myDescription = Description.Create()
myDescription("name").Value = "WebEdit"
Set obj_webedit = Browser("title:=ServiceUi").Page("title:=ServiceUi").Frame("html id:=outputView").WebEdit(myDescription)
obj_webedit.Set 123

其实也不用这么复杂,更简单的就这样:
Browser("title:=ServiceUi").Page("title:=ServiceUi").Frame("html id:=outputView").WebEdit(“name:=WebEdit”).Set 123

至于你说的,myDescription("Class Name").Value = "WebEdit"不能识别,很有可能该frame下Class Name为WebEdit的对象不止一个。

skyzhu 发表于 2010-12-28 16:09:20

本帖最后由 skyzhu 于 2010-12-28 16:11 编辑

Description 是没有 Class Name的,需要用micclass
具体的东西在注册表能看到一些,暂时说不太明白

可以参考
http://blog.csdn.net/zzxxbb112/archive/2010/03/17/5389043.aspx

superliming 发表于 2010-12-28 16:30:17

就是micclass

superliming 发表于 2010-12-28 16:32:17

就是micclass

here556 发表于 2010-12-28 16:59:45

我明白了,谢谢skyzhu 提供的文章!

阿七 发表于 2010-12-28 17:41:34

回复 3# skyzhu


那为什么 找的是 micclass
不是别的?
页: [1]
查看完整版本: 使用Description.Create()出现的问题