51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 4182|回复: 16
打印 上一主题 下一主题

[原创] 通过ChildObjects方法获得webTable对象个数为空

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2010-12-21 17:01:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我想通过ChildObjects方法获得页面里的webTable对象但是得不到对象,而我通过sgy观察页面里Frame("title:=output View")(即附件页面里右面的frame),是有webTable对象的,而且还不止一个,这是为什么?以下是我的代码,大家帮忙看下有什么错误。
Set webTable = Description.Create()
webTable("micclass").Value = "WebTable"

set Lists = Browser("title:=ServiceUi").Page("title:=ServiceUi").Frame("title:=output View").ChildObjects(webTable)
NumberofLists = Lists.count()

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
 楼主| 发表于 2010-12-21 17:52:35 | 只看该作者
[img][/img]
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2010-12-21 17:52:41 | 只看该作者
[img][/img]
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2010-12-21 17:58:08 | 只看该作者
测试页面见图

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2010-12-21 17:59:18 | 只看该作者
都是牛人啊
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2010-12-21 19:23:28 | 只看该作者
这么 不行,试试index
可能 哪里有点问题吧
Frame("title:=output View") 将title改为name
回复 支持 反对

使用道具 举报

该用户从未签到

7#
 楼主| 发表于 2010-12-21 20:13:49 | 只看该作者
frame是可以识别的,现在的问题是frame下的webTable对象无法识别,使用childObject得到的结果为empty,但是我最右面的显示后台流水号的frame里是有webTable的,我这样做是想通过判断webTable是否存在来判断页面执行成功或失败。因为如果测试成功的话见上面截图是有后台流水号的,我通过sgy发现是在webTable中显示的,如果失败的话见截图没有后台流水号只有错误信息,是没有webTable的,现在我只发现两者的区别在于是否有webTable,不知道大家是否有别的方法来达到我的目的,本来我也可以通过设置输出检查点来判断是否正确,但是那样需要录制脚本,我现在的脚本都是用描述编程实现的,我希望和录制脚本完全脱离开,以后通过Excel输入不同属性来执行脚本。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2010-12-22 11:16:57 | 只看该作者
你用Object spy定位到webtable对象,它有micclass这个属性么?
可以看看webtable是的class什么(比如说是listTable),然后用
webTable("class").Value = "listTable"
webTable("visible").Value  = True
NumberofLists = Lists.count()就取到了该frame下面所有class是listTable,visible为True的webtable的个数。

当然如果有能够唯一识别该webtable的属性(如name,innertext什么的),也可以这样:
Set webTable = Description.Create()
webTable("name").Value = "abcd"
webTable("visible").Value = True
set Lists = Browser("title:=ServiceUi").Page("title:=ServiceUi").Frame("title:=output View").WebTable(webTable)
Msgbox Lists.GetCellData(1,1)
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2010-12-22 11:42:29 | 只看该作者
Set webTable

webTable,把你要改的名称改成其它的,如ss,也许就是这个命名的错
回复 支持 反对

使用道具 举报

该用户从未签到

10#
 楼主| 发表于 2010-12-22 17:59:24 | 只看该作者
webTable 里 没有micclass属性,我是看帮助里ChildObjects的用法里是这么用的,如果sgy看不到这个属性就不能用吗
Set oDesc = Description.Create()

    oDesc("micclass").Value = "WebList"

Set Lists = Browser("Mercury Interactive").Page("Mercury Interactive").ChildObjects(oDesc)

    NumberOfLists = Lists.Count()

另外通过sgy观察到webTable的class属性为空
回复 支持 反对

使用道具 举报

该用户从未签到

11#
发表于 2010-12-24 15:20:00 | 只看该作者
不是的,可以用。micclass是Web qtp对各种控件对象默认认识的。
另外通过sgy观察到webTable的class属性为空,Spy的class跟micclass不是一个意思
回复 支持 反对

使用道具 举报

该用户从未签到

12#
发表于 2010-12-27 09:39:52 | 只看该作者
你的问题解决没有,我的JAVA程序,抓到的对象也是WEBTABLE,但是我写这句话,结果总是返回表头1行
ncount=Browser("Browser").Page("Ocj").Frame("Frame").WebTable("frmChild").RowCount
msgbox "查询结果记录数:"+cstr(ncount)
那位大侠看看,到底是为什么
回复 支持 反对

使用道具 举报

该用户从未签到

13#
 楼主| 发表于 2010-12-27 19:15:23 | 只看该作者
还没有解决。
回复 支持 反对

使用道具 举报

该用户从未签到

14#
发表于 2010-12-28 10:07:18 | 只看该作者
我的向对象库中添加时,自动识别时一个WEBTABLE,但是我查看它的HTML源码时,是使用JQERY动态的创建的,我在这个识别上是存在问题。但是我上面说的那个
ncount=Browser("Browser").Page("Ocj").Frame("Frame").WebTable("frmChild").RowCount
msgbox "查询结果记录数:"+cstr(ncount)
这个执行没有问题。等我解决后在聊聊,
回复 支持 反对

使用道具 举报

该用户从未签到

15#
 楼主| 发表于 2010-12-28 10:56:09 | 只看该作者
我的可以了,以前不可以的原因是因为Frame("title:=output View")不识别,现在换成了Frame("html id:=outputView")就可以了,但是又有问题了:
我通过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)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
回复 支持 反对

使用道具 举报

该用户从未签到

16#
发表于 2010-12-28 17:29:49 | 只看该作者
使用createDisction.Create chileobjects 时,qtp识别对象是默认通过micclass而去识别web中的对象的(定义的语法如此),而不是class Name,这个问题我以前也遇到过,你看看帮助文档,好像有说明。
“。。。会识别出很多对象,有些并不是WebEdit。。。“,会不会是页面中有些地方实际上是编缉框,但却设置了disable属性??
回复 支持 反对

使用道具 举报

该用户从未签到

17#
 楼主| 发表于 2010-12-29 19:46:47 | 只看该作者
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-23 16:41 , Processed in 0.094420 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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