共用方式為


UI 自動化樹狀結構概觀

備註

本檔適用於想要使用 System.Windows.Automation 命名空間中定義的受控UI自動化類別的 .NET Framework 開發人員。 如需 UI 自動化的最新資訊,請參閱 Windows 自動化 API:使用者介面自動化

輔助技術產品和測試腳本會巡覽 UI 自動化樹狀結構,以收集使用者介面 (UI) 及其元素的相關信息。

在UI自動化樹狀結構中,有一個根元素 (RootElement) 代表目前的桌面,其子元素代表應用程式視窗。 每個子元素都可以包含代表使用者介面部分的元素,例如功能表、按鈕、工具列和清單框。 這些元素接著可以包含像清單項目等元素。

使用者介面自動化樹狀結構不是固定結構,而且在整體上很少看到,因為它可能包含數千個元素。 其部分會視需要建置,而且可以在新增、移動或移除元素時進行變更。

UI自動化提供者透過在片段內部的項目之間進行導覽來支援UI自動化樹,片段包含一個根(通常位於視窗中)和一個子樹。 不過,提供者並不關心從一個控件流覽到另一個控件。 這是由使用者介面自動化核心所管理,使用來自預設視窗提供者的資訊。

自動化樹狀結構檢視

您可以篩選 UI 自動化樹狀結構,以建立僅包含特定 AutomationElement 用戶端相關物件的檢視。 此方法可讓用戶端自定義透過UI自動化呈現的結構,以符合其特定需求。

用戶端有兩種自定義檢視的方式:依範圍設定和篩選。 範圍是定義檢視的範圍,從基底元素開始:例如,應用程式可能只想要尋找桌面的直接子系,或應用程式視窗的所有子系。 篩選會定義要包含在檢視中的項目類型。

使用者介面自動化提供者支持篩選,方法是在元素上定義屬性,包括 IsControlElementPropertyIsContentElementProperty 屬性。

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

原始檢視

UI 自動化樹狀結構的原始檢視是包含桌面為根目錄的完整物件樹狀結構 AutomationElement。 原始檢視會密切遵循應用程式的原生程式設計結構,因此是最詳細的檢視。 這也是構建樹狀結構其他檢視的基礎。 由於此檢視取決於底層 UI 架構,因此 WPF 按鈕的原始檢視與 Win32 按鈕的原始檢視會有所不同。

原始檢視是透過搜尋元素且不指定屬性,或使用 RawViewWalker 巡覽樹狀結構來取得。

控制項檢視

使用者介面自動化樹狀結構的控件檢視可簡化輔助技術產品將UI描述給使用者的工作,並協助終端使用者與應用程式互動,因為它會密切對應至使用者感知的UI結構。

控件檢視是原始檢視的子集。 它包括原始檢視中的所有UI項目,終端使用者可理解為互動式或構成UI中控制件的邏輯結構。 參與UI邏輯結構的UI項目範例,但本身不是互動式,為項目容器,例如列表標頭、工具列、功能表和狀態列。 在控制檢視中不會看到僅用於版面配置或裝飾用途的非互動式物件。 例如,面板只用來配置對話框中的控件,但本身不包含任何資訊。 在控件視圖中可見的非互動式項目包括帶有資訊的圖像和對話中的靜態文字。 控件檢視中包含的非互動式項目無法接收鍵盤焦點。

藉由搜尋屬性 IsControlElement 設定為 true 的元素,或使用 ControlViewWalker 瀏覽樹狀結構,即可取得控制檢視。

內容檢視

UI 自動化樹狀結構的內容檢視是控件檢視的子集。 它包含可傳達使用者介面中正確資訊的 UI 項目,包括能接收鍵盤焦點的 UI 項目,以及某些文字並不是 UI 項目的標籤。 例如,下拉式方塊中的值會顯示在內容檢視中,因為它們代表終端使用者使用的資訊。 在內容檢視中,下拉式方塊和清單框都表示為一組 UI 專案,其中可以選擇一個或多個專案。 事實上,一個元件始終開啟,另一個可以展開和折疊,在內容檢視中這是無關緊要的,因為它的設計目的是向使用者顯示正在呈現的數據或內容。

內容檢視是藉由搜尋 屬性 IsContentElement 設定為 true的專案,或使用 ContentViewWalker 巡覽樹狀結構來取得。

另請參閱