UI 自动化概述
注意 |
---|
本文档的目标读者是欲使用 System.Windows.Automation 命名空间中定义的托管 UI Automation类的 .NET Framework 开发人员。有关 UI Automation的最新信息,请参见 Windows Automation API: UI Automation(Windows 自动化 API:UI 自动化)。 |
Microsoft UI Automation是 Microsoft Windows 的新增辅助功能框架,可用于支持 Windows Presentation Foundation (WPF) 的所有操作系统。
UI Automation提供了对桌面上的大多数 user interface (UI) 元素的编程访问,从而使辅助技术产品(如屏幕阅读器)能够向最终用户提供有关 UI 的信息,并能够通过标准输入以外的方式操作 UI。 UI Automation还允许自动测试脚本与 UI 进行交互。
注意 |
---|
UI Automation不能在由不同用户通过“运行身份”命令启动的进程之间实现通信。 |
可以确保所编写的 UI 自动化客户端应用程序能够在多种框架上运行。 UI Automation核心掩盖了 UI 各部分的框架之间的任何差异。 例如,WPF 按钮的 Content 属性、Win32 按钮的 Caption 属性以及 HTML 图像的 ALT 属性都映射到 UI Automation视图中的同一个属性 Name。
UI Automation在 Windows Vista、Microsoft Windows XP 和 Windows Server 2003 中提供了完整的功能。
UI 自动化提供程序通过内置的桥接服务为 Microsoft Active Accessibility 客户端应用程序提供某些支持。
本主题包括下列各节。
- 提供程序和客户端
- UI 自动化模型
- 相关主题
提供程序和客户端
UI Automation有四个主要组件,如下表所示。
组件 |
说明 |
---|---|
提供程序 API(UIAutomationProvider.dll 和 UIAutomationTypes.dll) |
一组由 UI 自动化提供程序实现的界面定义,提供有关 UI 元素的信息并响应编程输入的对象。 |
客户端 API(UIAutomationClient.dll 和 UIAutomationTypes.dll) |
一组托管代码类型,使 UI 自动化客户端应用程序可以获取有关 UI 的信息并向控件发送输入。 |
UiAutomationCore.dll |
处理提供程序与客户端之间的通信的基础代码(有时也称为 UI Automation核心)。 |
UIAutomationClientsideProviders.dll |
一组用于标准旧版本控件的 UI 自动化提供程序。 (WPF 控件为 UI Automation提供本机支持。)此支持自动提供给客户端应用程序。 |
从软件开发人员的角度而言,使用 UI Automation的方法有两种:一种是为自定义控件创建支持(使用提供程序 API),另一种是创建使用 UI Automation核心与 UI 元素通信的应用程序(使用客户端 API)。 您应当根据自己的关注点,参考本文档的不同部分。 您可以从以下各节中了解有关概念的更多信息,并获取实用的帮助知识。
节 |
主题 |
读者 |
---|---|---|
UI 自动化基础知识(本节) |
概念的广泛概述。 |
所有人。 |
概述和帮助主题,帮助您使用提供程序 API。 |
控件开发人员。 |
|
概述和帮助主题,帮助您使用客户端 API。 |
客户端应用程序开发人员。 |
|
有关提供程序应如何实现控件模式以及客户端可使用哪些功能的信息。 |
所有人。 |
|
有关提供程序应如何实现 Text 控件模式以及客户端可使用哪些功能的信息。 |
所有人。 |
|
有关不同控件类型支持的属性和控件模式的信息。 |
所有人。 |
下表列出了 UI Automation命名空间、包含它们的 DLL 以及使用它们的读者。
命名空间 |
引用的 DLL |
读者 |
---|---|---|
UIAutomationClientUIAutomationTypes |
UI 自动化客户端开发人员;用于查找 AutomationElement 对象、注册 UI Automation事件以及与 UI Automation控件模式一起使用。 |
|
UIAutomationProviderUIAutomationTypes |
除 WPF 之外的框架的 UI 自动化提供程序开发人员。 |
|
UIAutomationClientUIAutomationTypes |
除 WPF 之外的框架的 UI 自动化提供程序开发人员;用于实现 TextPattern 控件模式。 |
|
PresentationFramework |
WPF 的 UI 自动化提供程序开发人员。 |
UI 自动化模型
UI Automation将 UI 的每一部分作为一个 AutomationElement 向客户端应用程序公开。 元素包含在树结构中,以桌面作为根元素。 客户端可以将树的原始视图作为控件视图或内容视图进行筛选。 (使用此software development kit (SDK) 附带的 UI Spy 应用程序可轻松显示结构的这些标准视图)。应用程序还可以创建自定义视图。
AutomationElement 对象公开它们所表示的 UI 元素的通用属性。 其中一个属性是控件类型,它将其基本外观和功能定义为一个可识别的实体:例如按钮或复选框。
此外,元素还公开控件模式,以提供特定于这些元素的控件类型的属性。 控件模式还公开方法,使客户端能够获取有关元素的进一步信息并提供输入。
注意 |
---|
控件类型和控件模式之间并不是一一对应的关系。多个控件类型可以支持同一个控件模式,一个控件可以支持多个控件模式,每个控件模式公开其行为的不同方面。例如,一个组合框至少具有两个控件模式:一个表示其展开和折叠功能,另一个表示选择机制。有关具体信息,请参见 UI 自动化控件类型。 |
UI Automation还通过事件向客户端应用程序提供信息。 与 WinEvents 不同的是,UI Automation事件并不基于广播机制。 UI Automation客户端注册特定的事件通知,并且可以请求将特定的 UI Automation属性和控件模式信息传入其事件处理程序中。 此外,UI Automation事件还包含对引发该事件的元素的引用。根据是否有客户端在侦听,提供程序可以通过有选择地引发事件来改善性能。