我会定期把我的测试心得和体会发表在这里,希望来阅览的每位朋友都有所获。即使没有,有一点启发,我也心满意足。我也欢迎您的留言,哪怕是对我的批评,或者是指出我的错误。

如何使用WebTable 的ChildItem

上一篇 / 下一篇  2009-06-19 12:01:18

查看( 1437 ) / 评论( 10 )
不知道朋友们在使用WebTableChildItem时遇到过麻烦?我是有过,曾经有一段使用拒绝使用ChildItem函数(当然是怕出错了),然后使用别的方法来代替。今天帮同事解决一个脚本的通用性时,终于把此问题解决了。
    根据WebElement 处在WebTable 的行数Row和列数Column,可以使用GetCellData(Row, Column)可以得到需要的数据,可是使用ChildItem (Row, Column, “WebElement”, 0)时就得不到需要的Object呢?
    例如下面的代码
          Set bj = Browser("***").Page("***").Frame("Frame").WebTable("***").ChildItem(4,2,"WebElement",0)
        Print obj.GetROProperty ("outerhtml")
    可是却得不到我们需要的outerhtml的值。如果改变了Row和Column的值,我们经常又会得到一个错误 Object required, 这说明obj 没有返回值。
后来查阅QTP Help,发现WebTable有一个ChildItemCount 方法,于是我使用ChildItemCount (Row, Column, “WebElement”) 得到在的行数Row和列数Column上有多少个WebElement。 然后使用下面的代码验证,如果使用ChildItem (Row, Column, MicClass, Index), 我们需要操作的Object的Index的值到底是多少:
For inter = 0 To Browser("***").Page("***").Frame("Frame").WebTable("***").ChildItemCount (Row, Column, “WebElement”) - 1
Set bj = Browser("***").Page("***").Frame("Frame").WebTable("***").ChildItem(4,2,"WebElement", inter)
        Print obj.GetROProperty ("outerhtml")
Next
    当然,对于ChildItem函数里面的Row和 Column的值,一般情况下,使用GetCellData(Row, Column)里面的Row和 Column就可以得到。

    这样我们就可以通过ChildItem 得到WebTable里面所有的Object,不需要添加大量的Object,脚本的通用性自然就增强了。

[本帖最后由 walker1020 于 2009-6-18 18:11 编辑]

TAG: QTP WebTable ChildItem

lijinshui的个人空间 lijinshui 发布于2009-06-18 18:07:40
经验阿
不错
丁一下
lijinshui的个人空间 lijinshui 发布于2009-06-18 18:10:11
我现在一直都用的CS结构
一直也没有用过这个属性
我一直用Object来取好多属性值 和方法
可以说下两者之间的关系不
walker1020的个人空间 walker1020 发布于2009-06-18 18:14:22
ChildItem 和hildItemCount 是 WbfGrid 。WebTable 等的方法,不是所有类型的对象都有此方法。
walker1020的个人空间 walker1020 发布于2009-06-18 18:26:15

QUOTE:

原帖由 lijinshui 于 2009-6-18 18:10 发表
我现在一直都用的CS结构
一直也没有用过这个属性
我一直用Object来取好多属性值 和方法
可以说下两者之间的关系不
对象的 大多数属性都可以通过 GetROProperty得到。不过有些只能通过Object来取好多属性值 和方法,因为GetROProperty没有封装对象的所有方法,特别是有些用户自定义的方法和属性。
lijinshui的个人空间 lijinshui 发布于2009-06-18 18:28:54
回复 5# 的帖子
恩,好的,谢谢啦
反应好快啊 果然是版主 赫赫
walker1020的个人空间 walker1020 发布于2009-06-19 10:33:02
使用GetCellData(Row, Column)里面的Row和 Column,  对ChildItem (Row, Column, MicClass,0) 进行操作时,如果出现不了我们期望的结果,这说明最后一个参数的值不能是0.。我就遇到了这样的情况,使用ChildItemCount (Row, Column, “WebElement”) 得到的值是4,只有使用ChildItem (Row, Column, “WebElement”,2)  才可以得到我要的人结果。当然,如果使用ChildItemCount (Row, Column, MicClass)得到的返回值是1,那么 ChildItem 的值只能是0 了。
walker1020的个人空间 walker1020 发布于2009-06-19 10:43:02
如果使用ChildItemCount(Row, Column, MicClass)得到的返回值是0, 那么说明我们写的ChildItemCount里的某一个或某几个参数有误(类型错误或参数的值有错误)。 一般不会写错MicClass 的值(注意不要漏掉双引号)。因此最大的可能是Row的 Column 的1取值有误。 我们可以使用RowCount 方法得到 WebTable 的总行数,然后使用ColumnCount 函数得到WebTable 某行的列数。最后遍历循环每一行和每一列,看看到底Row的 Column 分别取什么值才能得到我们需要进行操作的数据。
    注意:ColumnCount 后面必须要加一个表示行号的参数,因为在一个WebTable 里面,不同的行可能有不同的列数(如最后一行只有2列,前面所有的行都有4列)。

[ 本帖最后由 walker1020 于 2009-6-19 10:44 编辑 ]
walker1020的个人空间 walker1020 发布于2009-06-19 10:56:08
最后还是说一句,如果你遇到了问题,可以先查阅 QTP Help。如果里面有说明,那么无疑你的问题就不难解决了。
fei.ge的个人空间 fei.ge 发布于2009-06-25 21:26:35
学习了
auto_tester发布于2014-07-08 13:22:29
up
我来说两句

(可选)

Open Toolbar