UI 自动化树概述

注释

本文档适用于想要使用 System.Windows.Automation 命名空间中定义的托管 UI 自动化类的 .NET Framework 开发人员。 有关 UI 自动化的最新信息,请参阅 Windows 自动化 API:UI 自动化

辅助技术产品和测试脚本导航 UI 自动化树,收集有关用户界面(UI)及其元素的信息。

在 UI 自动化树中,有一个根元素(RootElement)表示当前桌面,其子元素表示应用程序窗口。 其中每个子元素可以包含表示 UI 片段的元素,例如菜单、按钮、工具栏和列表框。 这些元素反过来可以包含列表项等元素。

UI 自动化树不是固定结构,很少在整体中看到,因为它可能包含数千个元素。 它的某些部分是根据需要生成的,并且可以在添加、移动或删除元素时进行更改。

UI 自动化提供程序通过实现片段内项之间的导航来支持 UI 自动化树,该树由根(通常托管在窗口中)和子树组成。 但是,提供程序并不参与控件之间的导航。 这是由 UI 自动化核心管理,使用默认窗口提供程序中的信息。

自动化树的视图

可以筛选 UI 自动化树以创建仅包含与 AutomationElement 特定客户端相关的对象的视图。 此方法允许客户端根据特定需求自定义通过 UI 自动化呈现的结构。

客户端可通过两种方式自定义视图:通过范围和筛选。 设置范围是指从基元素开始定义视图的范围,例如,应用程序可能希望仅查找桌面的直接子级,或者查找某个应用程序窗口的所有后代。 筛选正在定义要包含在视图中的元素类型。

UI 自动化提供程序通过定义元素的属性(包括 IsControlElementPropertyIsContentElementProperty 属性)来支持筛选。

UI 自动化提供三个默认视图。 这些视图由执行的筛选类型定义;任何视图的范围由应用程序定义。 此外,应用程序还可以对属性应用其他筛选器。例如,在控件视图中仅包括已启用的控件。

原始视图

UI 自动化树的原始视图是 AutomationElement 对象的完整树,该树的根元素是桌面。 原始视图紧跟应用程序的本机编程结构,因此是可用的最详细的视图。 原始视图还是其他树视图的生成基础。 由于此视图依赖于基础 UI 框架,WPF 按钮的原始视图将具有不同于 Win32 按钮的原始视图。

原始视图是通过搜索元素而不指定属性或使用 RawViewWalker 导航树获取的。

控件视图

UI 自动化树的控件视图简化了辅助技术产品向最终用户描述 UI 以及帮助最终用户与应用程序交互的任务,因为它紧密映射到最终用户感知的 UI 结构。

控件视图是原始视图的子集。 它包括所有最终用户在初始视图中理解为具备交互作用或有助于 UI 中控件逻辑结构的 UI 项。 有助于 UI 逻辑结构的 UI 项的示例,但本身不是交互式的,是项容器,如列表视图标头、工具栏、菜单和状态栏。 控件视图中不会显示仅用于布局或装饰目的的非交互式项目。 例如,面板仅用于在对话框中布局控件,但本身不包含任何信息。 将在控件视图中看到的非交互式项是包含对话框中信息和静态文本的图形。 控件视图中包含的非交互式项无法接收键盘焦点。

通过搜索具有IsControlElement属性设置为true的元素,或使用ControlViewWalker来导航树以获取控制视图。

内容视图

UI 自动化树的内容视图是控件视图的子集。 它包含传达用户界面中真实信息的 UI 项,包括可以接收键盘焦点的 UI 项和 UI 项上不是标签的一些文本。 例如,下拉列表组合框中的值将显示在内容视图中,因为它们表示最终用户正在使用的信息。 在内容视图中,组合框和列表框都表示为 UI 项的集合,其中可以选择一个或多个项。 由于内容视图旨在显示要呈现给用户的数据或内容,因此,内容视图中不存在如下情况:始终有一项处于打开状态,而另有一项是可以展开和折叠的。

通过搜索将属性IsContentElement设置为true的元素,或使用ContentViewWalker导航树来获取内容视图。

另请参阅