2009-08-20 17 views
1

Whiteを使用してWPFアプリケーションのUIを駆動しています。UI Automation(および/またはWhite)を使用して外部アプリケーションからコントロールのDataContextを取得する方法

しかし、私はいくつかの条件を確認するために、テスト中のアプリケーションの内部状態を突き止める必要がある点です。

具体的には、List<MyBusinessObject>にデータバインドされたDataGrid(WPFToolkit)があります。したがって、各行には、MyBusinessObject

DataContextがあります。グリッドには、オートメーションIDを使用してグリッドを見つけることができます。文字列"MyCompany.Namespace.MyBusinessObject"を返し

var row = Grid.Rows[0] 
row.AutomationElement.Current.Name 

をので、私はほとんどそこだが、私は実際に実際のビジネス・オブジェクト自体を取得することはできません。

私は、これを行うことができます。

私はWPF UIAutomation AutomationPeers(AutomationPeerから実際のビジネスオブジェクトであるOwnerプロパティを取得できます)を使用していますが、これらをすべて使用するにはインプロセスである必要があるようですWPFコントロールを提供するコンストラクタが必要です。

外部プロセスからAutomationPeerを構築する方法はありますか?それ以外の場合は、WPFコントロールの実際のDataContextにドリルダウンしますか?

答えて

3

私はできないと思います。 UIオートメーションを使用して情報を交換できる唯一の方法は、事前定義されたプロバイダを使用することです。UIとその表示に焦点を当てています。実際のオブジェクトをアプリとテストアプリの間で交換することはありません。

UIAを使用して最も近いのは、BusinessObject、または少なくとも関連するデータを文字列にエンコードし、ValuePatternを使用してその文字列を取得することです。

3

ItemStatus (Attached Property)

このプロパティは、要素は、アイテムのステータスを伝達されているかどうかを確認するためにクライアントを可能にします。たとえば、メッセージングアプリケーションの連絡先に関連付けられたアイテムが「ビジー状態」または「接続状態」の場合があります。

基本クラスを取得することはできません。あなたはUIを取得することしかできません。しかし、ビジネスクラスのAutomation PeerがItem Statusを公開する可能性があります。あなたはそこに簡単な文字列を入れたり、even XMLを置くことができます。

関連する問題