标题: ChildObject 使用For Each...Next问题 [打印本页] 作者: xjwldlover 时间: 2012-8-23 11:34 标题: ChildObject 使用For Each...Next问题 在QTP帮助文档查询For Each...Next说明时,该方法适用于数组、集合(Repeats a group of statements for each element in an array or collection)。
查询ChildObjects(desc)方法时,该方法返回一个对象集合(Returns the collection of child objects contained within the object. )
这样来看下面语句应该没问题,但是在运行时报错“对象不支持此属性或方法 For each obj in objs”
节选语句:
Set objs = obj_page.ChildObjects(desc)
For each obj in objs
print obj.OuterHtml
Next
恭候大神解答~
PS,已经知道通过FOR I = 0 TO N的方式可以,该问题只想知道为什么ChildObject 不能使用For Each ,衷心希望不要偏题~作者: xjwldlover 时间: 2012-8-23 13:54
中午查了一些资料分析一下原因:
使用TypeName查看ChildObject的返回对象类型为DispTOCollection,这一对象类型是QTP自定义的类型,VBS无法判断这种对象类型,在使用For Each时需要判断对象类型就会报错。
而使用For Count = i to j step n 这种方式时,其实是使用该DispTOCollection自己提供的方法obj(i),不需要VBS来判断对象类型。
可能结论:VBS的FOR EACH 使用时会先判断对象的类型,根据typeName来对对象元素进行划分取值,如果是一个在VBS中未定义的对象类型,那么程序无法对子对象进行划分,就会产生错误。