PyAutoGuiを試す

■ 概要

本来やりたいことが行き詰まったのでGUI操作自動化の味見をした。

Windows7(32bit) + Python3.6.1とでPyAutoGuiを利用して、単純なマウス操作とキーボード操作ができることを確認し、おおむね満足した。

■ 参照記事

公式(多分) の最新ドキュメントと、下記blog記事を参照してさっくり試した。

whitecat-student.hatenablog.com

www.slideshare.net

 

■ 試行手順

インストールは"pip install pyautogui"で一発。

まずはインタラクティブシェルでマウスカーソルを画面左上に動かしてみる。

  >>> import pyautogui

  >>> pyautogui.moveTo(x=100, y=200)

うまく動いた。

画面サイズの最大値は"pyautogui.size()"で求まるので、後は適当に座標計算すればどこにでも飛べるはず(マルチディスプレイ環境でどうなるかは不明)。

 

キーボード操作も模擬できる。使えるキー名は"pyautogui.KEYBOARD_KEYS"を表示させることでわかる。というわけで試す。

  >>> pyautogui.press(["ctrl", "alt", "delete"])

  >>> pyautogui.hotkey("ctrl", "alt", "delete")

…どちらもうまくいかない…。特殊キー操作だからダメなのか?

  >>> pyautogui.press("a")

は当然のように期待通り動いた。

  >>> pyautogui.press("numlock")

も動くので、なんちゃってLチカもできる。

 

とりあえず初回の試行としては満足した。

ただ、他アプリ操作は自前環境なら起動時間待ちなど試行錯誤でどうにかなりそうだが、Win32API利用なしで一般化できるのかは今後の課題。 公式ドキュメントなどに記載があるように、バグって暴走するのも怖い。

また"pyautogui.locateOnScreen()"を使うと、与えた画像ファイルと一致する画面表示座標を返してくれるようだが、透過画像に対してはうまく行かないことがあるようだ。ブラウザ上の透過画像をファイル保存して与えてみたが、Noneが帰ってきてしまった。このあたりは割り切るべきなのかもしれない。