PyAutoGUIってご存知ですか。
PyAutoGUIは、PythonのGUI自動化モジュールです。
これを利用すれば、マウスとキーボードの動きをプログラムで制御することができるので、
マウスとキーボードで操作するものについては、ほぼ自動化することができます。
RPAツールを導入すれば、簡単にPCの自動化はできますが、PyAutoGUIならば無料で使うことができます。
動作確認環境
- OS:OS X Mojave 10.14.3
- Python: 3.6.3
PyAutoGUIを使ってみる
さっそくPyAutoGUIをインストールしましょう。pipを利用します。
pip install pyautogui
インストールできたら、簡単なプログラムを用意します。
import pyautogui import time def main(): time.sleep(3) position = pyautogui.position() pyautogui.click(position) if __name__ == '__main__': main()
少し解説しますと、pyautogui.position()で現在のマウスカーソルの位置を取得します。
続いて、pyautogui.click()にpyautogui.position()で取得したカーソル位置を渡して、指定した位置でクリックしています。
なお、マウスカーソルを移動する時間を確保するためにプログラム実行時に3秒停止させています。
実行してみましょう。
実行してみたところ下記のようなエラーが表示されました。
Traceback (most recent call last): File " - /pyautogui/_pyautogui_osx.py", line 5, inimport Quartz ModuleNotFoundError: No module named 'Quartz' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "sample.py", line 1, in import pyautogui File " - /pyautogui/__init__.py", line 148, in from . import _pyautogui_osx as platformModule File " - /pyautogui/_pyautogui_osx.py", line 7, in assert False, "You must first install pyobjc-core and pyobjc: https://pyautogui.readthedocs.io/en/latest/install.html" AssertionError: You must first install pyobjc-core and pyobjc: https://pyautogui.readthedocs.io/en/latest/install.html
読んでみると、pyobjc-coreとpyobjcをインストールするようにと書いてあります。
インストールしてみましょう。
pip install pyobjc-core pip install pyobjc
実行すると、エラーは表示されなくなりました。
ただ、エラーは解消されましたが、pyautogui.click()が正常に動作していないようです。
現在のマウスカーソル位置でクリックが実行されていないようです。
調べてみると、PyAutoGUIのGithubページのissueにMojaveだと動作しないという書き込みを見つけました。
Pyautogui doesn’t seem to work on macOS Mojave · Issue #247 · asweigart/pyautogui
Mojaveから新しいセキュリティ機能が追加されたため、動作しなくなっていたようです。
対応方法を書いてありましたので設定してきましょう。
システム環境設定からセキュリティとプライバシーを開きます。
プライバシーを選択し、左側のリストからアクセシビリティをクリックします。
右側に表示された、下のアプリケーションにコンピュータの制御を許可にターミナルを追加します。
(iTermを使っている場合は、iTermを追加)
では、プログラムを実行してみます。
無事にクリックできました。
今回は以上です。