分享方式:


UI 自動化樹狀目錄概觀

注意

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

輔助技術產品和測試指令碼會導覽 UI 自動化樹狀結構,來收集使用者介面 (UI) 和其元素的相關資訊。

在 UI 自動化樹狀結構內有根項目 (RootElement),其代表目前的桌面,而其子項目代表應用程式視窗。 這些子項目每個都可以包含代表 UI 片段的元素,例如功能表、按鈕、工具列和清單方塊。 接著這些項目可以包含例如清單項目的項目。

UI 自動化樹狀結構不是固定的結構,且很少完全看到該結構,因為其可能包含數千個元素。 其中的部分會在需要時建置,且它可能隨著加入、移動或移除項目而發生變更。

UI 自動化提供者藉由在片段 (包含通常裝載於視窗中的根目錄以及子樹狀結構) 內包含的項目間實作導覽,支援 UI 自動化樹狀結構。 不過,提供者並不涉及控制項之間的導覽。 這由 UI 自動化核心管理,使用來自預設視窗提供者的資訊。

自動化樹狀的檢閱

UI 自動化樹狀結構可以進行篩選,以建立多個檢視,其中只包含與特定用戶端相關的 AutomationElement 物件。 這種方法可讓用戶端自訂透過 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 來導覽樹狀而取得。

另請參閱