はじめに
WindowsのUI自動化を行うには色々な方法があると思います。
UI Automationが一番有名と思いますが、WinAppDriverとSeleniumを組み合わせたり、pythonのpyautoguiを使ったりなど。
実はrobotframeworkにもRPA.WindowsというWindowsの自動化のライブラリが存在します。
(まだあまり有名ではない?です)
robotframeworkがテストの自動化で使われている(テスト結果などがhtmlに出力され非常に見やすい)のでWindowsのUI自動化と組み合わせるとより有用性があると思います。
準備
今回はrobotframeworkのRPA.Windowsを使ってSakuraエディタに書き込みファイル名をつけて保存するサンプルプログラムです。
WindowsでアプリのClass名などを取得するinspectツールについてはこちらの記事を参照してください。
まずはpip installでrobotframeworkとRPA.Windowsをインストールします。
pip install robotframework
pip install rpaframework-windows
またRPA.Windowsはアプリ起動時にWin+Rでアプリ名をして起動するようなので(他にも方法があるかもしれません)、Sakuraエディタをショートカットに保存します。
Win+Rでアプリをショートカットに保存する方法は過去の記事を参照してください。
サンプルプログラム
次にRPA.Windowsを使ったサンプルプログラムです。
*** Settings ***
Library RPA.Windows
*** Test Cases ***
Sakuraエディタテスト
# アプリを起動
Windows Run sakura
Control Window name:"SakuraView166"
# キーボード入力
Send Keys keys=Test{ENTER}
Send Keys keys=てすと{ENTER}
# 名前を付けて保存
Send Keys keys={CTRL}s
# ファイル名
Control Window class:"#32770"
Click name:"デスクトップ"
Send Keys id:1148 テスト
Send Keys keys={ENTER}
2行目でRPA.Windowsのライブラリを追加しています。
8行目の”SakuraView166″というのはinspectツールにてSakuraエディタの名称を取得しています
UI Automation Verifyで見ると右のNameに「SakuraView166」というのが表示されます
11行目や12行目ではSend Keysでエディタにキーボード入力するように文字列を送ることが出来ます。
Enterのように特殊なものは{ENTER}と{}で括っています。
キーなどの名称はドキュメントを参照してください。
15行目はファイルを保存する時の「Ctl+s」をSend Keysで行っています。
18行目はファイル名を保存する時に表示されるダイアログのコントロールを取得しています。
その後、Sakuraエディタではファイルパスをキーで入力できない(マウスでカチカチ選択しないといけない)のでデスクトップにファイルを保存しています。
実行結果
これを実行すると
==============================================================================
Sakura
==============================================================================
Sakuraエディタテスト | PASS |
------------------------------------------------------------------------------
Sakura | PASS |
1 test, 1 passed, 0 failed
==============================================================================

おわりに
今回はrobotframeworkのRPA.Windowsを使ったWindowsのUIの自動化についてでした。
例ではSakuraエディタにしましたが他のアプリでも同じ様に自動化が可能です。
日本語のドキュメントが今の所無いようですが公式サイトを見ればある程度はわかるのではないかと思います(何度か記事で書いていますが、プログラマ英語が出来ればそこそこなんとかなる説)
今はRPA.Windowsを使って色々調べているので、他にもサンプルプログラムの方を上げてみようかと思います。
この記事がお役に立ったのなら嬉しいです。
最後までお読みいただきありがとうございます。