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

时间:2012-09-17 18:00:24

标签: qtp

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

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

  2. 此外,对于第二行,它会出现错误

      

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

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

    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 个答案:

答案 0 :(得分: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

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