最近、この記事から知りました-
http://blogs.msdn.com/b/patrickdanino/archive/2009/11/11/custom-controls-and-ui-automation.aspx
-WPFのコントロールは、UIAアイテム自体を公開する責任があり、カスタムコントロールの新しく追加された機能は、対応するAutomationPeerクラスの実装を通じて公開されるまでUIAで使用できません。私の仕事では、多数のツールバーを使用するWPFアプリケーションのUIテストの自動化に割り当てられています。問題は、Microsoft UIオートメーションライブラリを介して、AutomationElementsとしてツールバー(明らかにカスタムコントロールとして開発されている)にアクセスできますが、その中のボタンにアクセスできないことです。子/子孫コレクションの数は常に0を返します。コード化されたUIテストを使用する場合、テストは常に失敗し、次のエラーメッセージが表示されます。
テストメソッドCAM2QDummyTest.CodedUITest2.CodedUITestMethod1が例外をスローしました:
Microsoft.VisualStudio.TestTools.UITest.Extension.FailedToPerformActionOnBlockedControlException:別のコントロールがコントロールをブロックしています。ブロックされたコントロールを表示して、アクションを再試行してください。追加の詳細:
TechnologyName:'MSAA'
名前:「標準」
ControlType:'ToolBar'
---> System.Runtime.InteropServices.COMException:HRESULTからの例外:0xF004F003
どうやら彼らは対応するAutomationPeerクラスを実装していませんでした。今、私はアプリケーションだけを持っており、ソースコードは持っていません。そのため、上記の記事で説明した方法で問題を解決することはできません。ツールバーの内側のボタンにアクセスするにはどうすればよいですか?どんな提案でもありがたいです。