2012-04-01 10 views
1

私のWPFアプリケーションはプリズムフレームワークを実装しています。ページが変わると、コンテナにロードされるメニューコントロールはほとんどありません。 これらのボタンにアサーションを追加するために、コード化されたUIを使用しようとしています。コード化されたUIはコントロールを一貫して認識しません

CUITを最初の画面で使用すると、何も認識されないようです。しかし、2番目の画面では認識されます。コントロールが最初の画面の1つの深さであることを除いて、コードを読み込むコードに変更はありません(スヌープが示すものです)。

標準のWPFコントロールであるにもかかわらず、コントロールを公開するために、ソースコードの末尾に書き込まれるオートメーションピアコードがまだ必要ですか?

他に何か一貫して認識させることができますか?

Inspect.exe、UIAが確認し、すべてのWPFは関係なく、私は午前画面の制御スヌープ表示。

+0

最初の画面を読み込む前に['Thread.Sleep()'](http://msdn.microsoft.com/en-us/library/system.threading.thread.sleep.aspx)を追加してみてください – KMoraz

+0

ありがとうKMoraz、私はdevコードにアクセスできません。スリープがテストコード内にあることが意図されていた場合は、それがどのように動作するか説明してください。 – kris123pra

+0

すべてのコントロールがロードされるのを待つことができます – KMoraz

答えて

2

[OK]をので、私は理解してだと思います。最初のページに移動し、CodedUI Test BuilderまたはSpy ++を使用して項目をハイライトまたは選択しようとすると、コントロールは認識されませんが、別のページで認識されます。

コントロールのコンテナが最初のページのカスタムコントロールか汎用WPFコントロールですか?カスタムコントロールの場合は、コントロールに対して意味のある操作を行うためにAutomationPeerクラスを実装する必要があります。必要なのは、ボタンをクリックするだけで、親コンテナ内を手動でクリックするコードを書くことができます。

+0

ありがとうございます。コントロールは標準のWPFボタンでした。私たちは、コード化されたUIがコントロールを認識するのを妨げていた別のレイヤーがあることを発見しました。今のところ問題は解決しましたが、このようなことが再び起こるかどうか疑問に思っていました。ピアを実装する方法を知っておくとよいでしょう。誰も良いサイトを提案することはできますか? – kris123pra

関連する問題