UIA Pro 插件

相关项: GUI 测试和组件

本主题提供 UIA Pro 插件的基本知识,以及如何使用 UIA Pro 测试实现 Microsoft UI Automation 模式的应用程序。

概述

UI Automation Pro (UIA Pro) 是现有 UI Automation 支持的增强版本。与 UI Automation 支持一样,它使用户能够测试已实现 UI Automation 提供程序接口的基于 Windows 的应用程序。

此外,它使测试创建和维护更加容易,提高了测试性能,并提供了对更多对象、方法和模式的支持。

使用 UIA Pro 需要安装并加载 UIA Pro 插件。

最近,该插件得到了进一步增强,成熟度更完备且支持更全面。有关详细信息,请参阅请参阅 "UIA Pro 增强功能"

有关实现指南和优化技巧,请参阅 请参阅 "UIA Pro 插件最佳实践"

UIA Pro 模式

使用 UIA Pro 插件,您可以测试实现 Microsoft UI Automation 模式的应用程序,而无需考虑它们的外观。这些模式定义 UI 元素的行为和功能。

不同的 UI 控件实现了与其自身功能匹配的模式。

例如:

  • 网格模式: 以行和列形式显示数据的控件,可实现检索和操作单元格数据等功能。

    UIAProDataGrid("Grid").GridPattern.GetCellValue(0,0)

  • 调用模式: 可激活的控件,例如按钮、复选框和其他可单击元素。

    UIAProButton("Button").InvokePattern.Invoke

  • 滚动模式: 滚动条、列表框、列表视图、组合框等控件以及其他处理可滚动内容的元素。

    UIAProScrollBar("ScrollBar").ScrollPattern.SetScrollPercent 50,50

任何控件实际可用的模式可能与此处提供的示例有所不同。任何 UI Automation元素支持的模式都由应用程序的实现决定。

要标识对象支持的模式,请执行以下操作:

  • 使用“对象侦测器”工具可视地检查对象。SupportedPatterns 属性列出选定对象支持的所有模式。

  • 运行时期间,使用 UIAProObject("Element").GetSupportedPatterns 方法。

UIA Pro 功能

每个对象都支持许多低级功能,从而能够与应用程序进行详细的通信。为了让您的工作更轻松,UIA Pro 插件还提供了高级功能,将多个低级功能打包在一起,从而提供更通用且易于使用的方法。如果您需要更具体的设计,请基于低级功能自行构建功能。

高级功能

低级功能是指在系统或框架级别运行的与 UI 元素的单独且直接的交互。使用离散的低级方法,您可以完全控制执行的每个步骤,直接使用特定模式和属性访问和操作 UI 元素。低级功能非常适合需要比高级功能更高级的自定义的复杂场景。

低级功能

低级功能是指在系统或框架级别运行的与 UI 元素的单独且直接的交互。低级方法由多个离散命令组成,使您可以完全控制交互的每个步骤。它们允许您使用特定的模式和属性直接访问和操作 UI 元素。低级功能非常适合需要比高级功能更高级的自定义的复杂场景。

示例:

高级功能 低级功能
UIAProDataGrid("Grid").GridPattern.GetCellText(0,0) UIAProDataGrid("Grid").GridPattern.GetCell(0,0).TextPattern.GetText()
UIAProDataGrid("Grid").GridPattern.GetCellValue(0,0) UIAProDataGrid("Grid").GridPattern.GetCell(0,0).ValuePattern.GetValue()
UIAProDataGrid("Grid").GridPattern.ClickCell(0,0) UIAProDataGrid("Grid").GridPattern.GetCell(0,0).Click

对象描述中的相对路径

UIA Pro 对象的 path 属性描述其在对象层次结构中的位置。除了使用绝对路径 (表示从根窗口开始的完整层次结构) 之外,您还可以选择使用相对路径来描述元素。

相对路径描述测试对象与其直接父对象之间的关系,如对象存储库或程序描述中所定义。

使用相对路径可以简化测试维护;当父对象的路径发生变化时,子对象的相对路径仍然有效,无需更新。

默认情况下,为新测试对象创建的 path 属性是绝对路径。您可以在对象标识中心 (OIC)、对象存储库或编程描述中手动编辑对象的路径属性,使其为相对路径。

使用相对路径的测试对象可以放置在使用绝对路径的测试对象下方。但如果某个对象使用了相对路径,则其所有子对象也必须使用相对路径。

相对路径用波浪号 (~) 字符表示。

绝对路径

  • 父: Window;Pane;Pane

  • 子: Window;Pane;Pane;List;ListItem

相对路径

  • 父: Window;Pane;Pane

  • 子: ~List;ListItem

有关 path 属性的详细信息,请参阅请参阅 "使用路径描述属性"

在 UIA Pro 模式下侦测对象

对象侦测器和对象标识中心为 UIA Pro 对象标识提供单独的模式。使用此模式可根据对象的 UI Automation 属性来标识对象并创建 UIA Pro 测试对象。

在 UIA Pro 模式下侦测对象

执行以下某项操作:

  • 在“对象侦测器”中,单击 指向手下拉箭头,选择“UIA Pro”,然后单击 按钮以在 UIA Pro 模式下侦测对象。

  • 在对象标识中心,单击“UIA Pro”按钮以在 UIA Pro 模式下侦测对象。

在 UIA Pro 模式下,您可以查看对象属性,将侦测的对象添加到本地或共享存储库,或将其拖到测试中以创建步骤。有关详细信息,请参阅请参阅 " 使用对象侦测器"请参阅 "使用对象标识中心"

对象属性将以它们会通过 UI Automation 而不是其本机技术进行识别的方式显示。

创建 UIA Pro 测试步骤

您可以从对象侦测器或对象标识中心创建对象并将它们添加到您的测试。

每个测试对象都支持以下类型的方法:

  • OpenText Functional Testing 常用方法和属性,例如: ClickType

  • 基于控件类型的受支持模式的方法。您可以使用 supportedpatterns 描述属性检查对象支持的模式。

有关这些测试对象方法的详细信息,请参阅《对象模型参考》UIA Pro 部分。

可用的测试对象和方法完全取决于在应用程序中实现的属性和模式。我们建议您熟悉应用程序中各个对象的属性,特别是控件类型 ID 和受支持的模式,以了解您可以使用哪些测试对象和方法。

UIA Pro 增强功能

此部分介绍 UIA Pro 插件最近引入的增强功能。

方面 增强功能
性能和稳定性

增强版 UIA Pro 插件提供以下功能:

  • 性能获得显著提升。

  • 提高了测试稳定性。

对象层次: 测试对象树导航

UI Automation 应用程序通常具有深层对象层次结构。增强版插件支持对层次结构中所有对象的完全访问和交互。

新方法可以实现测试对象树的全面、灵活遍历:

  • 您可以从所有级别检索子对象或父对象,或者指定要检索的对象级数。

  • 您还可以提供要检索的子对象或父对象类型的描述。

有关详细信息,请参阅《对象模型参考》的 UIAPro 部分中的以下方法

GetAncestorsGetChildrenGetDescendantsGetParent。使用这些方法来替代出于向后兼容考虑而仍受支持的 ChildObjects 方法。

对象层次: 侦测 对象标识中心显示所侦测 UIA Pro 对象的完整层次结构。将测试对象添加到对象存储库时,仅包含其最重要的上级。
对象层次: 常用方法和属性

在测试运行期间检索到的对象支持常用方法和属性,例如 GetCell 方法。

新支持的方法如下: ExistGetROPropertyGetTOPropertySetTOPropertyHighlightRefreshObjectToStringCheckPropertyWaitProperty

这使得测试变得非常强大,能够与应用程序对象层次结构中运行时发现的对象进行交互。

例如,已新增支持以下语句:

UIAProDataGrid("dataGrid").GridPattern.GetCell(1,1).Highlight

更专业的对象描述

支持辅助属性,从而能够创建优化的测试对象描述。

以前,所有对象标识属性都包含在所有 UIA Pro 测试对象描述中。现在,您可以在“对象标识”对话框中查看针对每种 UIA Pro 测试对象所考虑的属性。有关使用“对象标识”对话框的详细信息,请参阅请参阅 "配置测试对象类的对象标识"

目前,您无法编辑此属性列表,但在将测试对象添加到对象存储库后,您可以编辑其描述,修改用于标识它的属性列表及其值。

对象描述中的相对路径

为了简化测试维护,您可以将测试对象的 path 属性定义为相对于其父对象的相对路径。

当父对象的路径发生变化时,子对象的相对路径仍然有效,无需更新。有关详细信息,请参阅请参阅 "对象描述中的相对路径"

修复了已知缺陷

以下已知问题已得到解决:

  • 未正确使用旨在唯一标识应用程序中的对象的对象索引。

  • 一些步骤 (例如 HighlightGetROPropertyRefreshObject) 未包含在运行结果报告中。

  • 当应用程序中暂时无法访问的对象再次可用时,该对象上的测试步骤失败。

  • 在某些情况下,OpenText Functional Testing 停止响应。在某些情况下,客户需要重新应用一些注册表项。

  • 在某些情况下,高亮显示对象存储库中的对象不起作用。

  • 运行测试时,步骤之间的进展情况没有清晰地显示出来,有时会产生测试已停止的错觉。

  • 当无法标识对象时,步骤失败,报告会指定无法找到的对象。在某些情况下,报告指定了测试对象层次结构中的某个对象,但没有指定缺失的对象。

  • 编辑 UIA Pro 步骤时,代码完成可以建议用于方法参数的枚举值。运行测试时,这些值无法识别。

另请参见: