如何使用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 编辑 ] 经验阿
不错
丁一下:victory: 我现在一直都用的CS结构
一直也没有用过这个属性
我一直用Object来取好多属性值 和方法
可以说下两者之间的关系不 ChildItem 和hildItemCount 是 WbfGrid 。WebTable 等的方法,不是所有类型的对象都有此方法。 原帖由 lijinshui 于 2009-6-18 18:10 发表 http://bbs.51testing.com/images/common/back.gif
我现在一直都用的CS结构
一直也没有用过这个属性
我一直用Object来取好多属性值 和方法
可以说下两者之间的关系不
对象的 大多数属性都可以通过 GetROProperty得到。不过有些只能通过Object来取好多属性值 和方法,因为GetROProperty没有封装对象的所有方法,特别是有些用户自定义的方法和属性。
回复 5# 的帖子
恩,好的,谢谢啦反应好快啊 果然是版主 赫赫 :handshake 使用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 了。 如果使用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 编辑 ] 最后还是说一句,如果你遇到了问题,可以先查阅 QTP Help。如果里面有说明,那么无疑你的问题就不难解决了。 学习了 up :loveliness:厉害厉害
页:
[1]