![見出し画像](https://assets.st-note.com/production/uploads/images/136716468/rectangle_large_type_2_20c76985774a55e45c7d2c67329322db.png?width=800)
.NET MAUIアプリを操作するPower Automate for desktopフロー
自動化のコミュニティで、Power Automate for desktop(PAD)でWindows 11のペイントアプリの操作ができないとの質問がありました。
私の方でも確認してみると、たしかに「ファイル」ボタンはクリックできましたが、その先のメニュー項目の操作ができませんでした。
![](https://assets.st-note.com/img/1712639232679-ubCAPajX4V.png?width=800)
操作できなかったメニュー項目のプロパティを確認してみると以下のようになっています。
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)という見慣れない値があったので調べたところ、下記のサイトがヒットしました。
![](https://assets.st-note.com/img/1712639799514-5g9KHLob32.png?width=800)
下記サイトによると.NET MAUIは比較的新しいフレームワークで、どうやらWindows 11のペイントアプリはこちらで作られているようですが、PAD側で.NET MAUIアプリの操作に対応していないのだと思います。
2022年5月23日(米国時間)、.NET MAUIがGA(一般提供)されました。Microsoftは「.NET MAUIは、.NET Multi-platform App UIの略称で、モバイル、タブレット、デスクトップにまたがるネイティブデバイスのアプリケーションを構築するフレームワークです」と紹介しています。
.NET MAUI自体はGAされましたが、2022年6月26日の原稿執筆では開発環境「Visual Studio」は、Windows版も、Mac版も最新のプレビュー版での対応です。こちらは程なく安定版のVisual Studioでも対応されるでしょう。
.NET MAUIはXamarin.Formsから全く違う製品名に変わりましたが、何が違うのでしょうか? 分かりやすくいえば、.NET MAUIはXamarin.Formsの改良版です。
さらに調べてみると、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ファイルを実行し、指示に従ってインストールを行います。
![](https://assets.st-note.com/img/1712640570619-q7sCUIhYjQ.png)
![](https://assets.st-note.com/img/1712640613160-Y2rh2iYfYn.png)
![](https://assets.st-note.com/img/1712640663716-V05Tk0wuHv.png)
![](https://assets.st-note.com/img/1712640703835-g13hIwgWo6.png)
![](https://assets.st-note.com/img/1712640754939-SBk8CxXE0q.png)
開発者モードを有効にする
インストール後、そのままWinAppDriverを実行しようとすると、下記メッセージが表示されて実行することができません。
Developer mode is not enabled. Enable it through Settings and restart Windows Application Driver
Failed to initialize: 0x80004005
![](https://assets.st-note.com/img/1712641418277-lMjN5CR96X.png?width=800)
メッセージの指示に従って、「開発者モード」を有効にする必要があります。
![](https://assets.st-note.com/img/1712641535432-2ulDaVPnWb.png?width=800)
![](https://assets.st-note.com/img/1712641584839-fYPlDNYk1g.png?width=800)
WinAppDriverによるアプリの操作
実は数年前にもWinAppDriverを使ったことがあります。
そのときはAppiumを使用しましたが、仕組みとしてはJSON Wire Protocolベースなので、WinAppDriverにリクエストを投げればアプリを操作できるはずです。
PADには「Web サービスを呼び出します」アクションが用意されているので、さっそく電卓アプリを操作するフローを作ってみました。
電卓の「5」ボタンをクリックするだけの簡単な処理ですが、上手く動いているようです。
WinAppDriverでペイントアプリを操作するPower Automate for desktopフロー
では本題に戻り、Windows 11のペイントを操作するフローを作ってみることにします。
UI要素の指定で使用しているXPathは、下記記事で紹介しているWinAppDriver UI Recorderで取得したものを元にしています。
![](https://assets.st-note.com/img/1712648500459-ALCcmuVCK7.png?width=800)
工夫した点としては、下記記事にあるようにキー送信した際に「\」が「]」に勝手に変わってしまったので、事前にクリップボートにコピーしたファイルパスを「Ctrl + V」キーを送って貼り付けるようにしているところです。
これで無事にWinAppDriverを使ってPADからアプリを操作できることが確認できたわけですが、ここまでやるのであればPADを使う必要はなかったかもしれません・・・😅
この記事が気に入ったらサポートをしてみませんか?