我们知道webtable是由TR 和 TD 组成的,那么如何动态得到这些TR和TD对象
**************************************************************************************************************************
1、假如QTP录制页面脚本,web页面有一个webtable,而却这个webtable脚本回放时,数据行的数据是变化的,我们可能需要对
某一列的所有单元格中的TO属性进行编辑(Set),这时候我就需要的这些单元格的对象,好了,下面进入正题:
<1>首先我们通过描述性编程得到我们要操作的webtable对象
Dim oWebTableDesc
Set oWebTableDesc = Description.Create
oWebTableDesc("html id").value = "dgdPlanList" --(这个是html页面中datatble的id,如果页面没有指定,希望指定一下,如果页面中有多个Webtable时,这种指定,描述性编程我们很容易得到 )
oWebTableDesc("html tag").value = "TABLE"
Set oTableList = Set allTable = Browser("Browser").Page("页面名称").Frame("right").ChildObjects(oWebTableDesc) --得到一个table集合,如果页面中每个tableid都是唯一的话,那么通过html id 得到的这个集合只有一个table
dim cloumncount : cloumncount = oTableList.cloumnCount(RowIndex)--指定需要的某一行的列(当然也可以通过循环得到某一行的所有列)比如:
dim rowCount : rowCount = oTableList.RowCount
for rowIndex = 0 To rowCount -1
cloumncount = oTableList.cloumnCount(rowIndex)
Next
'对TR和TD对象进行描述性编程
Set oTRAndTDDesc = Description.Create()
oTRAndTDDesc("micclass").Value ="WebElement"
Set oTRAndTDList =oTableList(0).ChildObjects(oTRAndTDDesc) -- 得到的集合里面有webTable包括所有的TR和TD,还有其他文字内容,我们只需要找出我们所需要的TR和TD对象,存在到Scripting.Dictionary对象中
Set objList = CreateObject("Scripting.Dictionary")
for i=0 to oTRAndTDList.Count()-1
'print oTRAndTDList (i).GetROProperty("html tag") & i
If oTRAndTDList (i).GetROProperty("html tag") = "TD" Then
objList.add "td"&i, oTRAndTDList (i) '将td对象存在到"Scripting.Dictionary"对象中(获取TR对象也是一样的 )
End If
Next
'遍历"Scripting.Dictionary"对象集合中对象
For objIndex = 0 To objList.Count -1
objIndex = objIndex + cloumnCount -1 '指定我们需要的列的单元格,这里是最后一列的所有单元格
If Cint(objIndex) > Cint( objList.Count-1) Then '如果超出了"Scripting.Dictionary"对象集合,直接退出循环
Exit for
End If
'msgbox objIndex
obj = objList.Items '"Scripting.Dictionary"对象中所有项
set tdObj = obj(objIndex) '得到我们需要的td对象
'msgbox hh.GetROProperty("innertext") 'td的RO的属性
Next
**************************************************************************************************************************
以上个人自学所悟得到