我在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
答案 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
你能说出现在发生了什么吗?