0

QTP で Webtable ChildItem メソッドを使用して WebEdit と WebCheckbox を設定していますが、次の問題があります。

  1. 最初の行では、2 列目 (WebEdit) と 4 列目 (WebCheckbox) の値を適切に設定しますが、3 列目 (WebEdit) では値を設定し、4 列目に移動するとすぐに古い値にリセットします。

  2. また、2行目以降では、次のようなエラーが発生します

    必要なオブジェクト: '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
4

1 に答える 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 メソッドの 4 番目の引数は、その行と列の組み合わせで返される子アイテム (この場合は WebEdit) のインデックスです。
何が起こっているのか: 最初に見つかったコンテンツ (番号 2) の行で、インデックスは 0 になりますが、for ループの 2 回目の繰り返しで、インデックスは 1 になります。QTP はその行で 2 番目の WebEdit オブジェクトを見つけることができません /エラーが返されます。

だから、index = 0それを解決するために使用します。

最初の質問について、順序を変更するとどうなるか: 最初に WebCheckBox を設定し、次に 2 番目の 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

今何が起こっているか分かりますか?

于 2012-09-19T12:13:35.907 に答える