UI 自动化树概述

辅助技术产品和测试脚本在 Microsoft UI 自动化树中导航,以收集有关 UI 及其元素的信息。

在UI 自动化树中是一个根元素,它表示 Windows 桌面窗口 (“桌面”) ,其子元素表示应用程序窗口。 其中每个子元素都可以包含表示 UI 各部分的元素,例如菜单、按钮、工具栏和列表框。 这些元素可以包含元素,例如列表项。

UI 自动化树不是固定结构。 它很少出现在其整体上,因为它可能包含数千个元素。 UI 自动化树的某些部分是客户端需要的,树的结构会随着元素的添加、移动或删除而更改。

UI 自动化提供程序通过实现片段中的项之间的导航来支持UI 自动化树。 片段是特定框架中元素的完整子树,其根元素 (称为通常托管在窗口中的 片段根) 。

提供程序不关心从一个控件到另一个控件的导航。 这由 UI 自动化 核心管理,该核心使用来自默认窗口提供程序的信息。

本主题包含以下各节:

UI 自动化树的视图

可以筛选UI 自动化树,以创建仅包含与特定客户端相关的UI 自动化元素的视图。 此方法允许客户端自定义通过UI 自动化呈现的结构,以满足其特定需求。

客户端可以通过范围和筛选来自定义视图。 范围是定义视图的范围,从基元素开始。 例如,应用程序可能只想查找桌面的直接子级,或应用程序窗口的所有后代。 筛选用于定义包含在视图中的元素类型。

UI 自动化提供程序支持通过定义元素的属性进行筛选,包括 IUIAutomationElement::IsControlElementIUIAutomationElement::IsContentElement 属性。

UI 自动化提供三个默认视图:原始视图、控件视图和内容视图。 这些视图由执行的筛选类型定义。 任何视图的作用域由应用程序定义。 应用程序可以对属性应用其他筛选器;例如,在控件视图中仅包含已启用的控件。

原始视图

UI 自动化树的原始视图是桌面为其根目录的自动化元素的完整树。 原始视图严格遵循应用程序的本机编程结构,并且是最详细的可用视图。 原始视图还是其他树视图的生成基础。 由于此视图依赖于基础 UI 框架,因此Windows Presentation Foundation (WPF) 按钮的原始视图与 Microsoft Win32 按钮具有不同的原始视图。

通过搜索元素而不指定属性或使用 IUIAutomation::RawViewWalker 获取用于导航树的 IUIAutomationTreeWalker 接口来获取原始视图。

控件视图

控件视图是原始视图的子集。 它仅包括那些将 IUIAutomationElement::IsControlElement 属性设置为 TRUE 的 UI 项。

控件视图包括向用户提供信息或允许用户执行操作的 UI 项。 这些是自动测试应用程序最感兴趣的 UI 项。

控件视图还包括影响 UI 逻辑结构的非交互 UI 项。 其中包括项容器,例如列表视图标题、工具栏、菜单和状态栏。 控件视图中显示的其他非交互项是包含对话框中信息和静态文本的图形。

仅用于布局或装饰目的的非交互项(例如用于在对话框中布局控件的面板)不会显示在控件视图中。

UI 自动化树的控件视图紧密映射到最终用户感知到的 UI 结构。 这使得辅助技术产品能够更轻松地向最终用户描述 UI,并帮助最终用户与应用程序交互。

通过搜索 IUIAutomationElement::IsControlElement 属性设置为 true 的元素,或使用 ControlViewWalker 获取用于导航树的 IUIAutomationTreeWalker 接口来获取控件视图。

内容视图

UI 自动化树的内容视图是控件视图的子集。 它仅包括同时将 IUIAutomationElement::IsControlElementIUIAutomationElement::IsContentElement 属性设置为 TRUE 的 UI 项。

内容视图包含传达用户界面中实际信息的 UI 项,包括可以接收键盘焦点的 UI 项和一些不是 UI 项上的标签的文本。 这些是屏幕阅读器应用程序最感兴趣的 UI 项。 例如,下拉组合框中的值显示在内容视图中,因为这些值表示最终用户正在使用的信息。

在内容视图中,组合框和列表框都表示为 UI 项的集合,其中可以选择一个或多个项。 在内容视图中,一个项目始终处于打开状态,并且一个项目可以展开和折叠这一事实无关紧要,因为它旨在显示要呈现给用户的数据或内容。

通过搜索同时将 IsControlElementCurrentIsContentElement 属性设置为 TRUE 的元素,或使用 IUIAutomation::ContentViewWalker 获取用于导航树的 IUIAutomationTreeWalker 接口来获取内容视图。

下图显示了控件视图和内容视图之间的差异。 第一张图像显示了一个简单的组合框,下拉列表中包含三个项。 第二张图像显示了组合框 UI 项在 UISpy.exe 应用程序的控件和内容视图中的显示方式。

包含三个下拉项的简单组合框的屏幕截图

uispy 应用程序的屏幕截图,其中包含组合框项的控件和内容视图

概念性

创建 CUIAutomation 对象

获取 UI 自动化元素

UI 自动化基础知识