51Testing软件测试论坛

标题: 如何使用WebTable 的ChildItem [打印本页]

作者: walker1020    时间: 2009-6-18 18:05
标题: 如何使用WebTable 的ChildItem
不知道朋友们在使用WebTable 的ChildItem时遇到过麻烦?我是有过,曾经有一段使用拒绝使用ChildItem函数(当然是怕出错了),然后使用别的方法来代替。今天帮同事解决一个脚本的通用性时,终于把此问题解决了。
    根据WebElement 处在WebTable 的行数Row和列数Column,可以使用GetCellData(Row, Column)可以得到需要的数据,可是使用ChildItem (Row, Column, “WebElement”, 0)时就得不到需要的Object呢?
    例如下面的代码
          Set obj = 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 obj = 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 编辑 ]
作者: lijinshui    时间: 2009-6-18 18:07
经验阿
不错
丁一下
作者: lijinshui    时间: 2009-6-18 18:10
我现在一直都用的CS结构
一直也没有用过这个属性
我一直用Object来取好多属性值 和方法
可以说下两者之间的关系不
作者: walker1020    时间: 2009-6-18 18:14
ChildItem 和hildItemCount 是 WbfGrid 。WebTable 等的方法,不是所有类型的对象都有此方法。
作者: walker1020    时间: 2009-6-18 18:26
原帖由 lijinshui 于 2009-6-18 18:10 发表
我现在一直都用的CS结构
一直也没有用过这个属性
我一直用Object来取好多属性值 和方法
可以说下两者之间的关系不

对象的 大多数属性都可以通过 GetROProperty得到。不过有些只能通过Object来取好多属性值 和方法,因为GetROProperty没有封装对象的所有方法,特别是有些用户自定义的方法和属性。
作者: lijinshui    时间: 2009-6-18 18:28
标题: 回复 5# 的帖子
恩,好的,谢谢啦
反应好快啊 果然是版主 赫赫
作者: walker1020    时间: 2009-6-19 10:33
使用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    时间: 2009-6-19 10:43
如果使用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    时间: 2009-6-19 10:56
最后还是说一句,如果你遇到了问题,可以先查阅 QTP Help。如果里面有说明,那么无疑你的问题就不难解决了。
作者: fei.ge    时间: 2009-6-25 21:26
学习了
作者: auto_tester    时间: 2014-7-8 13:22
up
作者: 471926139    时间: 2014-10-11 16:06
厉害厉害




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