51Testing软件测试论坛

标题: 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中未定义的对象类型,那么程序无法对子对象进行划分,就会产生错误。

本人对vbs和qtp了解都属于起步阶段,这些只是猜测,望大神给出强有力的解释~




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