51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2208|回复: 1
打印 上一主题 下一主题

[原创] ChildObject 使用For Each...Next问题

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2012-8-23 11:34:55 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
在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 ,衷心希望不要偏题~
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
 楼主| 发表于 2012-8-23 13:54:03 | 只看该作者
中午查了一些资料分析一下原因:
使用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了解都属于起步阶段,这些只是猜测,望大神给出强有力的解释~
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-23 04:35 , Processed in 0.072422 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表