UI 自動化樹狀目錄概觀

輔助技術產品和測試腳本會流覽 Microsoft 消費者介面自動化 樹狀結構,以收集 UI 及其元素的相關資訊。

在消費者介面自動化樹狀結構中,是代表 Windows 桌面視窗 (「桌面」) ,其子項目代表應用程式視窗的根項目。 每個子項目都可以包含代表 UI 片段的專案,例如功能表、按鈕、工具列和清單方塊。 這些元素可以包含專案,例如清單專案。

消費者介面自動化樹狀結構不是固定結構。 總和中很少看到它,因為它可能包含數千個元素。 消費者介面自動化樹狀結構的元件建置為用戶端需要它們,而樹狀結構會在新增、移動或移除專案時變更。

消費者介面自動化提供者藉由實作片段中專案之間的流覽,來支援消費者介面自動化樹狀結構。 片段是特定架構中專案的完整子樹,而且具有根項目 (稱為 片段根) ,通常裝載在視窗中。

提供者不擔心從一個控制項流覽到另一個控制項。 這是由消費者介面自動化核心所管理,它會使用預設視窗提供者的資訊。

本主題包含下列各節。

消費者介面自動化樹狀結構的檢視

您可以篩選消費者介面自動化樹狀結構,以建立僅包含與特定用戶端相關的消費者介面自動化元素的檢視。 此方法可讓用戶端自訂透過消費者介面自動化呈現的結構,以符合其特定需求。

用戶端可以藉由範圍和篩選來自訂檢視。 範圍是從基底元素開始定義檢視的範圍。 例如,應用程式可能只想尋找桌面的直接子系,或應用程式視窗的所有子系。 篩選會定義檢視中包含的專案類型。

消費者介面自動化提供者支援藉由定義元素的屬性來篩選,包括IUIAutomationElement::IsControlElementIUIAutomationElement::IsContentElement屬性。

消費者介面自動化提供三個預設檢視:原始檢視、控制項檢視和內容檢視。 這些檢視是由執行的篩選類型所定義。 應用程式會定義任何檢視的範圍。 應用程式可以在屬性上套用其他篩選;例如,在控制項檢視中只包含已啟用的控制項。

未經處理的檢視

消費者介面自動化樹狀結構的原始檢視是桌面是根目錄之自動化專案的完整樹狀結構。 原始檢視會密切遵循應用程式的原生程式設計結構,而且是最詳細的檢視。 它也是樹狀結構其他檢視的建置基底。 因為此檢視取決於基礎 UI 架構,所以Windows Presentation Foundation (WPF) 按鈕的原始檢視與 Microsoft Win32 按鈕不同。

未經處理的檢視是藉由搜尋元素而不指定屬性,或使用 IUIAutomation::RawViewWalker 來取得用於巡覽樹狀結構的 IUIAutomationTreeWalker 介面。

控制項檢視

控制項檢視是未經處理檢視的子集。 它只會包含 IUIAutomationElement::IsControlElement 屬性設定為 TRUE的 UI 專案。

控制項檢視包含 UI 專案,提供資訊給使用者,或讓使用者執行動作。 這些是自動化測試應用程式最感興趣的 UI 專案。

控制項檢視也包含參與 UI 邏輯結構的非互動式 UI 專案。 其中包括專案容器,例如清單檢視標頭、工具列、功能表和狀態列。 出現在控制項檢視中的其他非互動式專案是具有對話方塊中資訊和靜態文字的圖形。

非互動式專案僅用於版面配置或裝飾用途,例如用來配置對話方塊中控制項的面板,不會出現在控制項檢視中。

消費者介面自動化樹狀結構的控制項檢視會緊密對應至使用者所察覺的 UI 結構。 這可讓輔助技術產品更輕鬆地向使用者描述 UI,並協助終端使用者與應用程式互動。

藉由搜尋 IUIAutomationElement::IsControlElement 屬性設定為 true 的專案,或使用 ControlViewWalker 取得用於巡覽樹狀結構的 IUIAutomationTreeWalker 介面,即可取得控制項檢視。

內容檢視

UI 自動化樹狀結構的內容檢閱是控制項檢視的子集。 它只會包含 IUIAutomationElement::IsControlElementIUIAutomationElement::IsContentElement 屬性設為 TRUE的 UI 專案。

內容檢視包含可傳達使用者介面中實際資訊的 UI 專案,包括可接收鍵盤焦點的 UI 專案,以及某些不是 UI 專案標籤的文字。 這些是螢幕助讀程式應用程式最感興趣的 UI 專案。 例如,下拉式下拉式方塊中的值會出現在內容檢視中,因為值代表使用者正在使用的資訊。

在內容檢視中,下拉式方塊和清單方塊都表示為 UI 專案的集合,其中可以選取一或多個專案。 一律開啟一個專案,而且一個專案可以在內容檢視中展開和折迭不相關,因為它的設計目的是要向使用者顯示資料或內容。

藉由搜尋 同時設定 IsControlElementCurrentIsContentElement 屬性 的專案,或使用IUIAutomation::ContentViewWalker 取得 IUIAutomationTreeWalker 介面來巡覽樹狀結構,即可取得內容檢視。

下圖顯示控制項檢視與內容檢視之間的差異。 第一個影像顯示一個簡單的下拉式方塊,其中包含下拉式清單中的三個專案。 第二個影像顯示下拉式方塊 UI 專案如何出現在UISpy.exe應用程式的控制項和內容檢視中。

具有三個下拉式專案的簡單下拉式方塊螢幕擷取畫面

uispy 應用程式的螢幕擷取畫面,其中包含下拉式方塊專案的控制項和內容檢視

概念

建立 CUIAutomation 物件

取得 UI 自動化項目

UI 自動化基礎