【问题标题】:How to raise a click event when selecting a tab in TTabSet via TabIndex?通过 TabIndex 在 TTabSet 中选择选项卡时如何引发单击事件?
【发布时间】:2011-08-11 18:40:02
【问题描述】:

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

Tab.TabIndex = 1

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

【问题讨论】:

    标签: vbscript automation tabindex automated-tests testcomplete


    【解决方案1】:

    您可以调用TTabSetItemRect 方法来通过索引获取选项卡的坐标,然后将这些坐标传递给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
    

    【讨论】:

      猜你喜欢
      • 2018-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-31
      • 1970-01-01
      • 2013-07-30
      • 2017-01-08
      相关资源
      最近更新 更多