51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2892|回复: 15
打印 上一主题 下一主题

[求助] 为什么webtable不支持rowcount?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2007-10-25 15:28:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
webtbl=description.Create
webtbl("name").value="chkAll"
webtbl("html tag").value="TABLE"
webobj=Browser("NYBOSS系统登陆").Window("-- 网页对话框").Page("产品选择").Frame("result").ChildObjects(webtbl)
i = webobj.RowCount

用上述方法数webtable的行数时,到i = webobj.RowCount时,提示:对象不支持此属性或方法。

不知什么原因,请各位帮忙看看,多谢。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2007-10-25 16:23:01 | 只看该作者
webobj又不是一个WebTable对象,而是多个对象的集合,当然不支持RowCount方法了
对于集合来说,你只能使用Count方法
将i = webobj.RowCount 替换为i = webobj.Count
而且webobj=Browser("NYBOSS系统登陆").Window("-- 网页对话框").Page("产品选择").Frame("result").ChildObjects(webtbl)
前应该加上set
再次选择描述属性时最好选择最具代表性的属性,比如你想选出所有的WebTable对象,则建议最好使用micclass属性,Value为"WebTable",避免不必要的麻烦
建议多看看帮助文档,尤其是在出现错误的时候,别自己想当然~你既然用到了ChildObjects方法,那么在帮助文档中是可以看到现成的例子教你怎么使用ChildObjects方法及其返回的对象的
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2007-10-25 18:32:06 | 只看该作者
tks!
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2007-10-26 13:20:12 | 只看该作者
如果只想得到一个webtable, 且想利用getcelldata, 又该怎样做呢?
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2007-10-26 13:35:03 | 只看该作者
那要看你想得的到是哪一个,条件是什么?
回复 支持 反对

使用道具 举报

该用户从未签到

6#
 楼主| 发表于 2007-10-26 13:57:11 | 只看该作者
就是:Browser("NYBOSS系统登陆").Window("-- 网页对话框").Page("产品选择").Frame("result") 中Frame下的WebTable, name是:‘产品编码’

请看下面的脚本:
Dim counter,webobj,i,webtbl
Set webtbl=description.Create
webtbl("micclass").value="WebTable"
webtbl("html tag").value="TABLE"
set webobj=Browser("NYBOSS系统登陆").Window("-- 网页对话框").Page("产品选择").Frame("result").ChildObjects(webtbl)

i = webobj.Count
For counter = 1 To i
  text = webobj.GetCellData(counter,2)
  If (text = "同方IC卡") Then
    counter = counter - 1
    Exit For
  End If
Next
Browser("NYBOSS系统登陆").Window("-- 网页对话框").Page("产品选择").Frame("result").WebCheckBox("name:=PRODUCT_CD_MUTI_2","index:="&counter).Set "ON"

现在是说:不支持:GetCellData,如何实现呢?多谢!
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2007-10-26 14:16:56 | 只看该作者
Dim tableRow
tableRow = Browser("×××××").Page("×××××").WebTable("×××××").rowcount
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2007-10-26 15:11:14 | 只看该作者
text = webobj.GetCellData(counter,2)  这句是错的。。。
我在2楼回帖的第一句就提到了,ChildObjects方法返回的是一个集合,多个对象的集合!也就是说webobj不是一个WebTable对象!它当然不支持RowCount,GetCellData等WebTable对象的方法。。。
webobj.Count返回的是集合中对象的个数,不是行数,忘了跟你说明了。你想要使用WebTable中的方法,那就需要先获得其中某个指定的WebTable对象,一般都是根据集合中的序号:
webobj(0).RowCount
webobj(1).GetCellData
这些帮助中都有的,也提示过你如何查帮助了,给了你渔你忽视掉,却只是要鱼。。。
回复 支持 反对

使用道具 举报

该用户从未签到

9#
 楼主| 发表于 2007-10-26 18:19:25 | 只看该作者
用上面的方法执行后,if语句判断错误,因为'同方IC卡'在第8行,但qtp勾选了第3行,不知是什么原因?
回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 2007-10-26 18:53:49 | 只看该作者
将你修改后的代码贴上来,如果方便的话将你的被测程序界面也贴上吧

只能先猜一下可能的原因,你的Frame下面是不是有多个WebTable,而你选的不是第一个WebTable,并且之前的几个WebTable中有了几个(不一定就是5个,如果是5个就说明其它地方没啥问题了)name:=PRODUCT_CD_MUTI_2的WebCheckBox,因此计算Count的时候会把那些WebCheckBox也算上,导致选错~
回复 支持 反对

使用道具 举报

该用户从未签到

11#
 楼主| 发表于 2007-10-29 11:00:19 | 只看该作者
Dim counter,webobj,i,webtbl,num,j
Set webtbl=description.Create
webtbl("micclass").value="WebTable"
webtbl("html tag").value="TABLE"
set webobj=Browser("NYBOSS系统登陆").Window("-- 网页对话框").Page("产品选择").Frame("result").ChildObjects(webtbl)
num=webobj.count
For j=0 to num-1
   Set obj=webobj(j)
         i =obj.RowCount
        For counter = 1 To i
             text = obj.GetCellData(counter,2)
             If (text ="同方IC卡") Then
             counter = counter - 1
         Exit For
         End If
       Next
Next
Browser("NYBOSS系统登陆").Window("-- 网页对话框").Page("产品选择").Frame("result").WebCheckBox("index:="&counter).Set "ON"

仍然选的是第3行,没有选中‘同方IC卡’那行(第8行),
麻烦给看看问题出在哪里。
回复 支持 反对

使用道具 举报

该用户从未签到

12#
发表于 2007-10-29 11:32:55 | 只看该作者
你调试下看看,看最后counter的值是多少

再确认下整个页面中在你的目标WebCheckBox之上总共有多少个WebCheckBox
回复 支持 反对

使用道具 举报

该用户从未签到

13#
 楼主| 发表于 2007-10-29 13:17:39 | 只看该作者
counter 为2, webcheckbox共48个(分5页显示)
回复 支持 反对

使用道具 举报

该用户从未签到

14#
 楼主| 发表于 2007-10-29 13:20:14 | 只看该作者
另外,我用getrowwithcelltext,执行后提示:不支持该方法:getrowwithcelltext
回复 支持 反对

使用道具 举报

该用户从未签到

15#
 楼主| 发表于 2007-10-29 13:34:15 | 只看该作者
调试发现,执行后,得到的列数为0,而且我用 If obj.getcelldata(i,3)="同方IC卡"  and obj.columncount(1)=6来限制,仍然得到counter为2,列数为0,实际列数应是6
回复 支持 反对

使用道具 举报

该用户从未签到

16#
发表于 2007-10-29 15:04:57 | 只看该作者
不应该啊。。。
你可以参考下帮助中的一个关于GetRowWithCellText 的例子
row = Browser("Mercury Tours").Page("Search Results").WebTable("OutboundFlights").GetRowWithCellText("Price", 2, 2)
Set Link = Browser("Mercury Tours").Page("Search Results").WebTable("OutboundFlights").ChildItem(row, 2, "Link", 0)
Link.Click
我觉得可能是你的某个方法或者逻辑有点问题吧,要结合被测程序看看才知道原因在哪里了,方便的话可以找个时间帮你远程协助下,找问题应该会快点~
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-23 12:28 , Processed in 0.071757 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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