首页 文章

QTP:使用ChildItem方法在WebTable中设置WebEdits不适用于第一行以外的行

提问于
浏览
0

我在QTP中使用Webtable ChildItem方法来设置WebEdit和WebCheckbox并且存在以下问题

  • 在第一行中,它正确设置第二列(WebEdit)和第四列(WebCheckbox)的值,但对于第三列(WebEdit),它设置值,一旦移动到第四列,就将其重置为旧值 .

  • 同样对于第二行以上,它给出了错误

需要对象:'WebTable(...) . ChildItem(...)'

请指导我这件事 .
这是我正在使用的代码:

Set objFrame = Browser("Browser").Page("Page").Frame("Frame")
If objFrame.WebTable("WebTable").Exist(0) Then
    rowct = objFrame.WebTable("WebTable").RowCount
isFound = 0

 For i= 2 To rowct
    strText = objFrame.WebTable("WebTable").GetCellData(i,1)
    index = i-2
    If Instr(strText,strType) > 0 Then
        objFrame.WebTable("WebTable").ChildItem(i,2,"WebEdit",index).Set strNumber
    objFrame.WebTable("WebTable").ChildItem(i,3,"WebEdit",index).Set strNumber2
    objFrame.WebTable("WebTable").ChildItem(i,4,"WebCheckBox",index).Set strPreferred

       isFound = 1
   Exit For
 End If
   Next

   If isFound = 0 Then
       rowct = objFrame.WebTable("WebTable").RowCount
   row= rowct + 1
   index = row - 2
   objFrame.WebButton("Button").Click

       objFrame.WebTable("WebTable").ChildItem(row,1,"WebList",index).Select strType
       objFrame.WebTable("WebTable").ChildItem(row,2,"WebEdit",index).Set strNumber
       objFrame.WebTable("WebTable").ChildItem(row,3,"WebEdit",index).Set strNumber2
       objFrame.WebTable("WebTable").ChildItem(row,4,"WebCheckBox",index).Set strPreferred

End If
End If

1 回答

  • 1

    这是导致错误的原因:

    For i= 2 To rowct
        strText = objFrame.WebTable("WebTable").GetCellData(i,1)
        index = i-2
        If Instr(strText,strType) > 0 Then
            objFrame.WebTable("WebTable").ChildItem(i,2,"WebEdit",index).Set strNumber
        ...
    

    WebTable上的ChildItem方法的第四个参数是该行/列组合上返回的子项目(在本例中为WebEdit)的索引 .
    那么,发生了什么:在第一个找到内容的行(nr.2),索引变为0,但是在for循环的第二次迭代中,索引变为1.QTP在该行上找不到第二个WebEdit对象/列并将返回错误 .

    因此,使用 index = 0 来解决这个问题 .

    对于第一个问题,如果更改顺序会发生什么:首先设置WebCheckBox,然后设置第二个WebEdit:

    objFrame.WebTable("WebTable").ChildItem(i,2,"WebEdit",index).Set strNumber
    objFrame.WebTable("WebTable").ChildItem(i,4,"WebCheckBox",index).Set strPreferred
    objFrame.WebTable("WebTable").ChildItem(i,3,"WebEdit",index).Set strNumber2
    

    你能说出现在发生了什么吗?

相关问题