2016-04-04 9 views
4

独自のSystem.Windows.Automation.Conditionクラスを作成する方法はありますか?私はこのクラスがどのように動作するのかわからないのは、比較動作を定義するパブリックメソッドがないからです。UIAのカスタム条件

背景:私はUIAutomationライブラリを使用して、ユーザーが自分の行動を繰り返すためにやり取りする要素を見つけます。時には、オートメーションIDや名前のようなプロパティによって要素にアクセスすることが難しい場合があります。最近、私は、Windows 7のAeroバーのボタンが、選択されたインスタンスの名前に名前を変更することを発見しました。これは、私が比較のために正確な名前を使用することができないため、実際に私を攻撃します。

+0

AutomationProperties.HelpTextをタグのようなプロパティとして使用する方法はありますか? – DLDR

+2

私は答えはありませんが、私は同じ問題を抱えています。プロパティ値条件は、私が知る限り、完全一致のみです。私は、実行時に変更が必要なもののテキストがあるため、正規表現を取る条件が必要です。または、述語のラムダを受け入れます。私はなぜ彼らがこのAPIを作り、それを提供しないのか理解できません。検索条件をサブクラス化することも不可能になっているようだから、すべての子を検索する以外は何の問題もありません。 – Dennis

答えて

0

inspect.exeを使用すると、画面上のすべてのUI要素の利用可能なすべてのプロパティを表示できます。これは、さまざまなケースでUI要素を識別するために使用するプロパティを理解するのに役立ちます。 たとえば、要素名が静的でない場合、AutomationIdプロパティが非常に便利な場合があることがわかりました。

また、部分一致の名前の要素を検索する場合は、利用可能な要素のすべてのツリー(例:FindAllメソッド経由)をTrueConditionで繰り返し、名前を手動で一致させることができます。