1

与えられた 2 つのアプリケーション:

  • すべてのコントロールが AutomationId を持っているわけではなく、変更できない1 つの WPFアプリケーション。さらに、アプリケーションは AutomationId を設定せずに実行時にコントロールを追加します。
  • 上記の WPF アプリケーションを自動化する 1 つのコンソール アプリケーション

ほぼ同じ時間内にすべての要素にアクセスしたいので、それが必要です。(使用する直前に自動化要素を検索すると、時間が (ms から s まで) 大きく異なるようです - 要素の量やツリー層によって異なります)

WPF の実行時に、コンソール アプリケーション内で WPF コントロールの AutomationIds を設定したいと考えています。この問題の解決策を考えられる場合は、知っておくと便利です!


私が今まで試したこと:

1.)反省

Type type = element.GetType();
FieldInfo fi = type.GetField("AutomationIdProperty");
fi.SetValue(element, "x"); //Error

エラー メッセージ:「'System.String' 型のオブジェクトを 'System.Windows.Automation.AutomationProperty' 型に変換できません」

代わりに次を使用すると、エラーはスローされませんが、XAML では何も変更されません

fi.SetValue(element, AutomationElement.AutomationIdProperty); 

2.)直接

AutomationElement element; // = my AutomationElement 
element.Current.AutomationId = "x"; //since AutomationId is Readonly - its not possible

3.) DependencyObjectsDependencyPropertiesも有望に思えますが、これまでのところ解決策を思いつきませんでした。誰かがそれを経験していますか??

4

1 に答える 1