UI 自動化概觀
注意
本文件適用對象為 .NET Framework 開發人員,其想要使用 System.Windows.Automation 命名空間中定義的受控 UI 自動化類別。 如需 UI 自動化的最新資訊,請參閱 Windows 自動化 API:UI 自動化。
Microsoft UI Automation 是 Microsoft Windows 新的協助工具架構,可於支援 Windows Presentation Foundation (WPF)的所有作業系統上使用。
UI 自動化可讓您以程式設計方式存取桌面的大部分使用者介面 (UI) 元素,讓螢幕閱讀器等輔助技術產品提供 UI 的相關資訊給使用者,並透過標準輸入以外的方式操作 UI。 UI 自動化也允許自動化測試指令碼以與 UI 互動。
注意
UI 自動化不支援不同使用者透過 Run as 命令,來啟動處理序之間通訊的功能。
撰寫使用者介面自動化用戶端應用程式時,可以保證應用程式可在多個架構上運作。 UI 自動化核心可以掩蓋架構裡的任何差異,這些架構是各種 UI 片段的基礎。 例如,WPF 按鈕的 Content
屬性、Win32 按鈕的 Caption
屬性,以及 HTML 影像的 ALT
屬性全都會對應至 UI 自動化檢視內的單一屬性 Name。
UI 自動化可在執行 .NET Framework 的受支援 Windows 作業系統上提供完整的功能 (請參閱 .NET Framework 系統需求或從 .NET Core 3.0 開始的 .NET Core 版本)。
UI 自動化提供者透過內建橋接服務,為 Microsoft Active Accessibility 用戶端應用程式提供一些支援。
提供者和用戶端
UI 自動化有四個主要元件,如下表所示。
元件 | 描述 |
---|---|
提供者 API (UIAutomationProvider.dll 和 UIAutomationTypes.dll) | 由 UI 自動化提供者實作的一組介面定義,這些物件提供 UI 元素的相關資訊,並回應程式性的輸入。 |
用戶端 API (UIAutomationClient.dll 和 UIAutomationTypes.dll) | 一組受控程式碼類型,可讓 UI 自動化用戶端應用程式取得 UI 的相關資訊,並將輸入傳送至控制項。 |
UiAutomationCore.dll | 處理提供者與用戶端之間通訊的基礎程式碼 (有時稱為 UI 自動化核心)。 |
UIAutomationClientsideProviders.dll | 一組適用於標準舊版控制項的使用者介面自動化提供者。 (WPF 控制件具有 UI 自動化的原生支援。)用戶端應用程式會自動獲得此支援。 |
就軟體開發人員的觀點而言,使用 UI 自動化的方法有兩種:建立自訂控制項 (使用提供者 API) 的支援,以及建立使用 UI 自動化核心與 UI 元素 (使用用戶端 API) 通訊的應用程式。 視您著重的部分而定,您應該參閱本文件的不同部分。 您可以深入了解這些概念,並在下列章節中取得實際的操作說明知識。
區段 | 主題 | 對象 |
---|---|---|
UI 自動化基本概念 (本節) | 概念概觀淺論。 | 全部。 |
適用於 Managed 程式碼的 UI 自動化提供者 | 協助您使用提供者 API 的概觀及操作說明主題。 | 控制項開發人員。 |
適用於 Managed 程式碼的 UI 自動化用戶端 | 協助您使用用戶端 API 的概觀及操作說明主題。 | 用戶端應用程式開發人員。 |
UI 自動化控制項模式 | 提供者應如何實作控制項模式,以及哪些功能可供用戶端使用的相關資訊。 | 全部。 |
UI 自動化文字模式 | 提供者應如何實作文字控制項模式,以及哪些功能可供用戶端使用的相關資訊。 | 全部。 |
UI 自動化控制項類型 | 不同控制項類型支援之屬性和控制項模式的相關資訊。 | 全部。 |
下表會列出 UI 自動化命名空間、包含這些命名空間的 DLL 以及命名空間的適用對象。
Namespace | 參考的 DLL | 對象 |
---|---|---|
System.Windows.Automation | UIAutomationClientUIAutomationTypes | UI 自動化用戶端開發人員;用來尋找 AutomationElement 物件、註冊 UI 自動化事件,並可用於 UI 自動化控制項模式。 |
System.Windows.Automation.Provider | UIAutomationProviderUIAutomationTypes | WPF 以外架構的 UI 自動化提供者開發人員。 |
System.Windows.Automation.Text | UIAutomationClientUIAutomationTypes | WPF 以外架構的 UI 自動化提供者開發人員;用來實作 TextPattern 控制項模式。 |
System.Windows.Automation.Peers | PresentationFramework | WPF 的 UI 自動化提供者開發人員。 |
使用者介面自動化模型
UI 自動化會將每個 UI 片段公開給用戶端應用程式作為 AutomationElement。 項目包含於樹狀結構中,且桌面是根項目。 用戶端可將樹狀結構之未經處理的檢視篩選為控制項檢視或內容檢視。 應用程式也可以建立自訂檢視。
AutomationElement 物件會公開它們所代表之 UI 元素的通用屬性。 其中一個屬性是控制項類型,它會將其基本外觀和功能定義為單一可辨識的實體:例如,按鈕或核取方塊。
此外,項目還會公開控制項模式,用以提供其控制項類型專用的屬性。 控制項模式也會公開方法,讓用戶端取得項目的進一步資訊及提供輸入。
注意
控制項類型和控制項模式之間並不存在一對一的對應關係。 控制項模式可由多個控制項類型所支援,且控制項可支援多個控制項模式,每個控制項都會公開其行為的不同層面。 例如,下拉式方塊擁有至少兩個控制項模式:其中一個代表展開和折疊的能力,另一個則代表選取機制。 如需特定資訊,請參閱 UI Automation Control Types。
UI 自動化也會透過事件將資訊提供給用戶端應用程式。 不同於 WinEvents,UI 自動化事件並非以廣播機制為基礎。 UI 自動化用戶端會註冊特定事件通知,並可要求特定 UI 自動化屬性和控制模式資訊傳遞至其事件處理常式。 此外,UI 自動化事件也包含引發事件之元素的參考。 提供者可以選擇引發事件來改善效能,取決於是否有任何用戶端接聽。