.NET MAUIアプリを操作するPower Automate for desktopフロー
自動化のコミュニティで、Power Automate for desktop(PAD)でWindows 11のペイントアプリの操作ができないとの質問がありました。
私の方でも確認してみると、たしかに「ファイル」ボタンはクリックできましたが、その先のメニュー項目の操作ができませんでした。
操作できなかったメニュー項目のプロパティを確認してみると以下のようになっています。
Name: "開く"
ControlType: UIA_MenuItemControlTypeId (0xC35B)
LocalizedControlType: "menu item"
BoundingRectangle: {l:268 t:279 r:514 b:308}
IsEnabled: true
IsOffscreen: false
IsKeyboardFocusable: true
HasKeyboardFocus: false
AcceleratorKey: "Ctrl+O"
AccessKey: "Alt, O"
ProcessId: 1968
RuntimeId: [2A.17052A.4.3D]
AutomationId: "FileOpen"
FrameworkId: "XAML"
ClassName: "MenuFlyoutItem"
「MenuFlyoutItem」(ClassName)という見慣れない値があったので調べたところ、下記のサイトがヒットしました。
下記サイトによると.NET MAUIは比較的新しいフレームワークで、どうやらWindows 11のペイントアプリはこちらで作られているようですが、PAD側で.NET MAUIアプリの操作に対応していないのだと思います。
さらに調べてみると、Windows Application Driver (WinAppDriver) バージョン 1.2.1 以上であれば.NET MAUIアプリのUIテストができることが分かりました。
であれば、PADからWinAppDriverを使えば.NET MAUアプリの操作ができるわけですね!
さっそく試してみることにしました。
WinAppDriverのインストール
1.GitHubのReleasesページから「WindowsApplicationDriver_1.2.1.msi」をダウンロードします。
2.ダウンロードしたmsiファイルを実行し、指示に従ってインストールを行います。
開発者モードを有効にする
インストール後、そのままWinAppDriverを実行しようとすると、下記メッセージが表示されて実行することができません。
メッセージの指示に従って、「開発者モード」を有効にする必要があります。
WinAppDriverによるアプリの操作
実は数年前にもWinAppDriverを使ったことがあります。
そのときはAppiumを使用しましたが、仕組みとしてはJSON Wire Protocolベースなので、WinAppDriverにリクエストを投げればアプリを操作できるはずです。
PADには「Web サービスを呼び出します」アクションが用意されているので、さっそく電卓アプリを操作するフローを作ってみました。
電卓の「5」ボタンをクリックするだけの簡単な処理ですが、上手く動いているようです。
WinAppDriverでペイントアプリを操作するPower Automate for desktopフロー
では本題に戻り、Windows 11のペイントを操作するフローを作ってみることにします。
UI要素の指定で使用しているXPathは、下記記事で紹介しているWinAppDriver UI Recorderで取得したものを元にしています。
工夫した点としては、下記記事にあるようにキー送信した際に「\」が「]」に勝手に変わってしまったので、事前にクリップボートにコピーしたファイルパスを「Ctrl + V」キーを送って貼り付けるようにしているところです。
これで無事にWinAppDriverを使ってPADからアプリを操作できることが確認できたわけですが、ここまでやるのであればPADを使う必要はなかったかもしれません・・・😅