UI 自動化樹狀目錄概觀
注意事項 |
---|
這份文件適用於想要使用 System.Windows.Automation 命名空間中定義之 Managed UI Automation 類別的 .NET Framework 開發人員。如需 UI Automation 的最新資訊,請參閱 Windows Automation API:使用者介面自動化 (英文)。 |
輔助技術產品和測試指令碼會巡覽 UI Automation樹狀目錄,以收集有關user interface (UI) 及其項目的資訊。
在 UI Automation樹狀目錄內,有一個表示目前桌面的根項目 (RootElement),而其子項目則表示應用程式視窗。 每個子項目都可以包含表示 UI 的項目,例如功能表、按鈕、工具列和清單方塊。 這些項目 (Element) 也可以包含項目 (Element),例如清單項目 (Item)。
UI Automation樹狀目錄不是固定的結構,而且由於可能包含數千個項目,因此很少完整顯示。 其中部分是在需要時建立的,而且它會隨著新增、移動或移除項目而變更。
UI 自動化提供者可以透過在包含根 (通常裝載在視窗中) 和子樹狀目錄的片段中實作項目間巡覽來支援 UI Automation樹狀目錄。 不過,提供者並不會參與控制項之間的巡覽。 這項程序是由 UI Automation核心使用預設視窗提供者的資訊加以管理。
這個主題包含下列章節。
- 自動化樹狀目錄的檢視
- 相關主題
自動化樹狀目錄的檢視
您可以對 UI Automation樹狀目錄進行篩選,以建立只包含特定用戶端相關 AutomationElement 物件的檢視。 這個方法可讓用戶端透過 UI Automation來自訂呈現結構,以符合特定需要。
用戶端有兩個自訂檢視的方法:依範圍設定和依篩選。 範圍設定是定義從基底項目開始的檢視範圍:例如,應用程式可能只要尋找桌面的直接子系,或應用程式視窗的所有子代。 篩選則是定義要包含在檢視中之項目的類型。
UI 自動化提供者可以藉由定義項目上的屬性 (包括 IsControlElementProperty 和 IsContentElementProperty 屬性) 來支援篩選。
UI Automation提供三個預設檢視。 這些檢視是根據執行的篩選類型而定義;任何檢視的範圍都是由應用程式所定義。 此外,應用程式可以在屬性上套用其他篩選,例如,只在控制項檢視中包含啟用的控制項。
未經處理的檢視
UI Automation樹狀目錄的未經處理的檢視是 AutomationElement 物件的完整樹狀目錄,桌面為根。 未經處理的檢視會依循應用程式的原生程式設計結構,因此是最詳細的檢視。 它也是樹狀目錄其他檢視的基礎。 因為這個檢視是依賴基礎 UI 架構,所以 WPF 按鈕和 Win32 按鈕的未經處理的檢視會不同。
您可以在不指定屬性的情況下搜尋項目,或使用 RawViewWalker 來巡覽樹狀目錄,以取得未經處理的檢視。
控制項檢視
UI Automation樹狀目錄的控制項檢視會簡化輔助技術產品對使用者說明 UI 的工作,並協助使用者與應用程式互動,因為這個檢視會密切對應至使用者所認知的 UI 結構。
控制項檢視是未經處理的檢視的子集。 它包含來自未經處理的檢視的所有 UI 項目,使用者會將這些項目視為互動式項目或是提供給 UI 中之控制項的邏輯結構。 例如清單檢視標頭、工具列、功能表和狀態列,這些都是提供給 UI 的邏輯結構但本身不是互動式的 UI 項目的範例。 只用於配置或裝飾性用途的非互動式項目不會顯示在控制項檢視中。 其中一個範例就是只用於在對話方塊中配置控制項,但本身不包含任何資訊的面板。 會顯示在控制項檢視中的非互動式項目是對話方塊中含有資訊的圖形和靜態文字。 控制項檢視中包含的非互動式項目無法接收鍵盤焦點。
您可以藉由搜尋 IsControlElement 屬性設定為 true 的項目,或使用 ControlViewWalker 來巡覽樹狀目錄,以取得控制項檢視。
內容檢視
UI Automation樹狀目錄的內容檢視是控制項檢視的子集。 它包含在使用者介面中傳達真實資訊的 UI 項目,包括可接收鍵盤焦點的 UI 項目,以及不是 UI 項目上標籤的一些文字。 例如,下拉式清單方塊中的值會出現在內容檢視中,因為它們是表示使用者使用的資訊。 在內容檢視中,下拉式方塊和清單方塊都表示為可選取其中一個或多個項目的 UI 項目集合。 檢視永遠開啟以及檢視可展開和摺疊等實際情況,對內容檢視是無關的,因為它的設計目的是顯示呈現給使用者的資料 (或內容)。
您可以藉由搜尋 IsContentElement 屬性設定為 true 的項目,或使用 ContentViewWalker 來巡覽樹狀目錄,以取得內容檢視。