0

TTabSet我有一个 TestComplete 测试,它使用TabIndex属性选择一个选项卡:

Tab.TabIndex = 1

这很好用。但是,我注意到该选项卡上的某些对象需要启用单击事件。也就是说,我如何通过TabIndex涉及某种点击事件来选择选项卡项?

4

1 回答 1

2

TabIndex您可以调用TTabSet'ItemRect方法通过其索引获取选项卡的坐标,然后将这些坐标传递给 TestComplete 的方法,而不是给 赋值Click。这是一个例子:

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
于 2011-08-29T12:06:35.677 回答