現在、Microsoft UIオートメーションライブラリとC#を使用してWindowsフォームアプリケーションを自動化しようとしていますが、パフォーマンスに関して大きな問題があります。 PropertyCondition
を使用して単一要素を識別したり、ウィンドウのすべての要素を反復するには非常に時間がかかります(最大4分)。 AutomationElement
を持ってすぐにすべてが問題ありません(例:GetCurrentPropertyValue
が100ms以内に反応します)。Microsoft UIオートメーションライブラリのパフォーマンスが低い
パフォーマンスの低下は、1つのアプリケーションにのみ適用されます。私はソースにアクセスすることはできませんが、何かを変更またはチェックする必要がある場合は、責任あるプログラマーに話すことができます。私が知る限り、アプリケーションのいくつかのイベント(塗料など)が上書きされていました。アプリケーションの典型的なウィンドウは、FindAll
メソッドによって見つけられる約100個の要素を含む。
UIオートメーションライブラリのCOMインターフェイスも試しましたが、これは約2倍高速ですが、これは実際には問題を解決しません。
誰もがこの問題を解決する方法を知っていますか、または同様の動作を経験しましたか?
正しく理解されていれば、パフォーマンスの低下は基本的にテスト中の誤って書かれたアプリケーションに関連していて、UIオートメーションフレームワーク自体には関係していませんでしたか? – tomalone
オートメーションが使用されているUIのThread.Sleepコードですか?または、自動化を実行しているアプリケーションですか? Btw、4歳のSOの投稿が互いに2日以内に最初の2つのコメントを取得する確率はどのようなものですか? –
@Tobias:Thread.Sleepでコードを書いた人は誰でも完全なばかだ。残念ながら、あなたの答えはUIオートメーションが極端に遅いことを観察している他のすべての人を助けるものではありません。自動化されたアプリケーションでこのような愚かなプログラミングエラーがなくても、UIAは大変なことです。バグがたくさんあり、機能が不足していて、スレッドセーフではなく、非常に遅いです。 – Elmue