您可以调用TTabSet 的ItemRect 方法来通过索引获取选项卡的坐标,然后将这些坐标传递给TestComplete 的Click 方法,而不是给TabIndex 赋值。这是一个例子:
Sub Main
Set tabSet = Sys.Process("Project1").VCLObject("Form1").VCLObject("TabSet1")
For i = 0 To tabSet.Tabs.Count
ClickTab tabSet, i
Delay 1000
Next
End Sub
Sub ClickTab(TTabSet, ItemIndex)
Dim rect, x, y
Set rect = TTabSet.ItemRect(ItemIndex)
x = (rect.Left + rect.Right) / 2
y = (rect.Top + rect.Bottom) / 2
TTabSet.Click x, y
End Sub
但是,这种方法需要:
- 您的测试应用程序是使用调试信息构建的(这使得公共成员,包括
ItemRect,可供 TestComplete 使用)。
- 应用程序代码包含
ItemRect 方法调用(否则此方法将被Delphi 的智能链接器排除在EXE 之外,因此TestComplete 将无法使用它)。
此外,如果您的选项卡控件的选项卡比显示的多(即Tabs.Count > VisibleTabs),您需要滚动它以首先显示所需的选项卡。例如,您可以使用FirstIndex 属性来执行此操作:
Sub ClickTab(TTabSet, ItemIndex)
If ItemIndex >= TTabSet.FirstIndex + TTabSet.VisibleTabs Then
TTabSet.FirstIndex = ItemIndex
End If
Dim index, rect, x, y
index = ItemIndex - TTabSet.FirstIndex
Set rect = TTabSet.ItemRect(index)
x = (rect.Left + rect.Right) \ 2
y = (rect.Top + rect.Bottom) \ 2
TTabSet.Click x, y
End Sub