UI オートメーション ツリーの概要
メモ |
---|
このドキュメントは、System.Windows.Automation 名前空間で定義されているマネージ UI Automation クラスを使用する .NET Framework 開発者を対象としています。UI Automationに関する最新情報については、「Windows Automation API: UI Automation (Windows オートメーション API: UI オートメーション)」を参照してください。 |
支援技術製品およびテスト スクリプトは、UI Automation ツリー内を移動してuser interface (UI) とその要素に関する情報を収集します。
UI Automation ツリー内には、現在のデスクトップを表し、その子要素がアプリケーション ウィンドウを表すルート要素 (RootElement) があります。 これらの各子要素にはそれぞれ、メニュー、ボタン、ツール バー、リスト ボックスなどの UI を表す要素を含めることができます。 これらの要素には、さらにリスト項目などの要素が含まれることがあります。
UI Automation ツリーは固定された構造ではありません。また、何千という要素が含まれる可能性があるため、その全体像が完全な形で認識されることはほとんどありません。 ツリーの各部分は必要に応じて構築され、要素の追加、変更、削除に従い、ツリーの全体像は変化します。
UI オートメーション プロバイダーは、フラグメント内の項目間のナビゲーションを実装することで UI Automation ツリーをサポートします。このツリーは、ルート (通常はウィンドウでホストされる) とサブツリーで構成されます。 ただし、プロパイダは、あるコントロールから別のコントロールへのナビゲーションには関係しません。 このようなナビゲーションは、UI Automation コアにより既定のウィンドウ プロバイダーの情報を使用して管理されます。
このトピックは、次のセクションで構成されています。
- オートメーション ツリーのビュー
- 関連トピック
オートメーション ツリーのビュー
UI Automation ツリーをフィルター処理して、特定のクライアントに関連する AutomationElement オブジェクトのみを含むビューを作成できます。 この方法を使用すると、クライアントは、UI Automationを通じて表される構造を、特定のニーズに合わせてカスタマイズできます。
クライアントでのビューのカスタマイズには、スコープの指定による方法とフィルター処理による方法の 2 つの方法があります。 スコープの指定では、基本要素を基点としてビューの範囲を定義します。たとえば、アプリケーションでデスクトップの直接の子だけを検索する必要がある場合と、アプリケーション ウィンドウのすべての子孫を検索する必要がある場合があります。 フィルター処理では、ビューに含まれる要素の種類を定義します。
UI オートメーション プロバイダーは、要素のプロパティ (IsControlElementProperty プロパティと IsContentElementProperty プロパティなど) を定義することでフィルター処理を実現します。
UI Automationには、3 つの既定のビューがあります。 これらのビューは、実行されるフィルターの種類により定義されます。どのビューの範囲もアプリケーションで定義されます。 さらに、アプリケーションはプロパティに他のフィルターを適用できます。たとえば、コントロール ビュー内に有効なコントロールだけを含めることができます。
未加工ビュー
UI Automation ツリーの未加工ビューは、デスクトップをルートとした AutomationElement オブジェクトの完全なツリーです。 未加工ビューは、アプリケーションのネイティブなプログラム構造に厳密に従っているため、使用可能なビューの中で最も詳細なビューです。 ツリーの別のビューが構築されるときのベースにもなります。 このビューは基になる UI フレームワークに依存するため、WPF ボタンの未加工ビューは、Win32 ボタンの未加工ビューとは異なります。
未加工ビューは、プロパティを指定せずに要素を検索するか、RawViewWalker を使用してツリー内を移動することにより取得されます。
コントロール ビュー
UI Automation ツリーのコントロール ビューは、エンド ユーザーが認識する UI 構造に密接に対応しているため、エンド ユーザーに対して UI をわかりやすく示し、エンド ユーザーによるアプリケーションとの対話を支援するという、支援技術製品にとっての作業負荷を軽減します。
コントロール ビューは、未加工のビューのサブセットです。 このビューには、エンド ユーザーが対話的な項目として、または UI におけるコントロールの論理構造の一役を担う項目として認識する、未加工ビューの UI 項目がすべて含まれます。 UI の論理構造の一役を担うが、それ自体は対話的ではない UI 項目の例として、リスト ビュー ヘッダー、ツール バー、メニュー、ステータス バーなどの項目のコンテナーがあります。 レイアウトまたは装飾の目的でのみ使用される非対話的な項目は、コントロール ビューには表示されません。 たとえば、ダイアログ ボックス内のコントロールのレイアウト目的でのみ使用され、それ自身には何の情報も含まれないパネルがこれに該当します。 コントロール ビューに表示される非対話的な項目は、ダイアログ ボックス内の情報や静的テキストを含むグラフィックスです。 コントロール ビューに含まれる非対話的な項目は、キーボード フォーカスを受け取ることができません。
コントロール ビューは、IsControlElement プロパティが true に設定されている要素を検索するか、ControlViewWalker を使用してツリー内を移動することにより取得されます。
コンテンツ ビュー
UI Automation ツリーのコンテンツ ビューは、コントロール ビューのサブセットです。 コンテンツ ビューには、キーボード フォーカスを受け取ることができる UI 項目や、UI 項目のラベルではない一部のテキストなど、ユーザー インターフェイスで実際の情報を伝達する UI 項目が含まれます。 たとえば、ドロップダウン コンボ ボックスの値は、エンド ユーザーが使用する情報を表すため、コンテンツ ビューに表示されます。 コンテンツ ビューでは、コンボ ボックスとリスト ボックスはどちらも、1 つの (または複数の) 項目を選択できる UI 項目のコレクションとして表されます。 コンテンツ ビューは、ユーザーに提示されているデータ (コンテンツ) を表示するためのものであるため、ある項目は常に開いた状態で、別の項目は展開および縮小できるという事実は重要ではありません。
コンテンツ ビューは、IsContentElement プロパティが true に設定されている要素を検索するか、ContentViewWalker を使用してツリー内を移動することにより取得されます。