この記事では、pywinautoのインストールについて解説しています。
pywinautoを使えば、PythonでPC操作の自動化プログラム(RPA)を開発することが可能です。
本記事の内容
- pywinautoの動作環境
- pywinautoのインストール
- pywinautoの動作確認
それでは、上記に沿って解説していきます。
pywinautoの動作環境
pywinautodoドキュメントサイト
https://pywinauto.readthedocs.io/en/latest/
pywinautoは、Microsoft Windows GUIを自動化するためのPythonモジュールのセットです。
マウスやキーボードの操作をウィンドウズのダイアログやコントロールに送ることができます。
pywinautodoの最新バージョンは、0.6.8です。
2019年10月28日に公開されています。
この最新バージョンがサポートしているPythonのバージョンは以下。
- Python 2.7
- Python 3.5
- Python 3.6
- Python 3.7
ちなみに、Python 3.8のリリースは、2019年10月14日となります。
Python 3.8を含んでいないのは、単純にタイミングの問題なのでしょうか?
ただ、Python 3系は互換性が大丈夫な印象があります。
実際、PyPDF2というライブラリは、サポート対象外でも普通にインストール・動作できました。
その内容に関しては、以下の記事で解説しています。
よって、Python 3.8以降でも大丈夫だと想定できます。
では、その想定が正しいかどうかを確認しましょう。
pywinautoのインストール
まずは、Pythonのバージョン確認からです。
>python -V Python 3.8.6
公式的には、サポート対象外ですね。
おそらく、Python 3.8や3.9の環境の人がそれなりにいるはずです。
では、pipコマンドを使ってインストールしていきます。
pipコマンドを使う際には、以下を事前に実行してください。
python -m pip install --upgrade pip
pipコマンドを使う際には、呪文のように唱えてください。
いよいよ、pywinautoをインストールします。
pip install pywinauto
次の表示でインストール処理が完了しました。
Successfully installed comtypes-1.1.8 pywin32-300 pywinauto-0.6.8 six-1.15.0
インストールが、 無事に完了しました。
やはり、Python 3.8でも問題なかったです。
ただし、動作検証はまだしていません。
そのため、インストール成功とはこの段階では言えません。
そこで、次にpywinautoの動作確認を行います。
pywinautoの動作確認
インストールが完了したら、次にするべきことは自動化するアプリのアクセシビリティ技術を把握することです。
アクセシビリティ技術とは、pywinautoのバックエンドのことを指しています。
Windowsでサポートされているアクセシビリティ技術は、以下の2つ。
- Win32 API(backend=”win32″)
- MS UI Automation(backend=”uia”)
Win32 APIは、MFC、VB6、VCL、シンプルなWinFormsコントロールと古いレガシーアプリです。
MS UI Automationは、WPFやQt5を使ったWinForms、Microsoft Storeのアプリ、ブラウザです。
「そんなのわからないよ~」と思う方がいるかもしれません。
わからなくても大丈夫です。
ちゃんとアクセシビリティ技術を確認するツールがあります。
- Spy++
- Inspect.exe
- py_inspect.py
興味がある場合は、各自で調べてみてください。
正直、Windows 10で動くようなモノは「MS UI Automation」がほとんどだと思います。
つまり、確認するまでもないということです。
実際、私の環境で確認した限りは、「MS UI Automation」ばかりです。
しかし、pywinautoでのデフォルト指定は「Win32 API」なのです。
おそらく、デフォルトが古いのは、pywinautoの歴史がそこそこ古いからだと思います。
そのことを意識して見ると、以下の動作確認のコードも理解できるでしょう。
自動化の内容としては、メモ帳を起動するプログラムです。
from pywinauto.application import Application app = Application(backend="uia").start('notepad.exe') # describe the window inside Notepad.exe process dlg_spec = app.UntitledNotepad # wait till the window is really open actionable_dlg = dlg_spec.wait('visible')
「backend=”uia”」で指定する必要があります。
これを指定しないと、「backend=”win32″」になるということですね。