仕事柄、GUIなアプリケーションの自動化を結構な頻度でやるのだが、WPFアプリを自動化する場合結構面倒くさい問題が発生してしまう。
Windowsアプリケーションの自動化って結構色々と方法があって、最近だとAutoItを好んで使用しているのだが、これの自動化がいわゆるWinFormsを前提としていて、WPFみたいにXAMLで構築されたUIではコントロールの操作ができない。
これの対策として、今のところはC#のUI Automationを使用しているのだが、これもなかなか癖のあるもので、要素を特定するためのAutomation IDが結構変わることがあるのだ。IDとは一体。
Automation IDが変わるということは、直接指定するためには他に一意となる何かを使用するわけだが、これも変動しないID的なものが何かイマイチ分からず、仕方がないので要素総なめして検索するしかなさそうだ。
ちなみに、WPFアプリケーションの構造を解析する場合、みんな大好きspy++ではできなくて、Inspect.exeなるツールを使う必要があり、こちらもなぜかクソ重い謎仕様だったりする。やはりWindowsの自動化の道程は険しい。
こういうの見てると、シェルコマンドで大抵のことができてしまうLinuxってのは、コンピュータをコンピュータとして使用するうえで非常に便利なのだなと再認識できる。