こんにちは、DXCEL WAVEの運営者(@dxcelwave)です!
- PC上での作業を自動化したい!
- Pythonを用いてマウスを自動で操作する方法が知りたい!
【GUIオートメーション】マウスとキーボードの自動操作
GUIオートメーションは、定型化された作業の自動化やコンピューターソフトウェアのテストを目的に使用される技術の一つです。
ユーザーが通常行うPC画面上でのマウスやキーボード操作を自動的に再現できます。本記事では、Pythonを用いてGUIオートメーションを実現する方法を解説します。
PyAutoGUIとは
Pythonを用いたGUIオートメーション実現に際してPyAutoGUIを利用します。PyAutoGUIとは、GUI上で以下の操作を自動化できるライブラリです。
- キーボード入力
- マウス操作(マウス移動・ボタンクリック)
- 画面操作(スクリーンショット)
【参考】GUIオートメーションの学習におすすめの書籍
PythonによるGUIオートメーションをはじめ、その他の自動化方法について詳しく知りたい方向けにおすすめの書籍を紹介します。
【PyAutoGUI】インストール
お手元のPCでPyAutoGUIを利用するために、事前に以下のライブラリをインストールしましょう。ご自身のOSに応じてインストールが必要なライブラリが異なります。
Windowsの場合
pip install pyautogui
MacOSの場合
MacOSをお使いの方は、PyAutoGUIと依存性のある以下のライブラリも併せてインストールが必要です。
pip install pyobjc-framework-Quartz pyobjc-core pyobjc pyautogui
Linuxの場合
sudo pip install python3-xlib
sudo apt-get install scrot python3-tk python3-dev
【PyAutoGUI】使用上の注意点
GUIオートメーションの特徴として「Pythonは信じられないほど高速にマウスが移動し、キー入力することができる」という点があります。これは便利な一方、使い方を間違えると制御不能に陥ってしまうことがあります。
万が一制御不能に陥った場合、 GUIオートメーションのプログラムを強制終了できるショートカットキーを利用すると良いです。
Windowsの場合
Ctrl + Alt + Delete
MacOSの場合
Command + Shift + Option + Q
Linuxの場合
Ctrl + Alt + Delete
【Python実践】PyAutoGUIでマウスを自動操作する方法
PyAutoGUIを用いてマウスを移動しPC画面上の位置を追跡する方法について解説します。
ライブラリのインストール
はじめに、PyAutoGUIライブラリを読み込むためのコードを記述します。
import pyautogui
pyautogui.PAUSE = 1 # 関数呼出直後に何秒停止するかを指定
pyautogui.FAILSAFE = True # フェールセーフ機能
【参考】PC画面の解像度(X,Y)を確認
後述するPyAutoGUIのマウス関連の関数は(X,Y)
座標を利用します。PCでは上図のように、XとYが0となる原点が左上になり、右に行くほどxが大きくなり、下に行くほどyが大きくなる仕組みです。
PC全体の解像度を確認するには、以下のコードを実行します。
# 解像度確認
width, heght = pyautogui.size()
# 出力
print(f'(X,Y) = ({width},{heght})')
# 出力イメージ
# (X,Y) = (1440,900)
マウスを指定の座標に移動する
前述の座標を用いてマウスを指定の場所に移動する方法を示します。
マウスの移動にはpyautogui.moveTo()
関数を利用し次のように記述します。
# マウスの移動
pyautogui.moveTo(300, # X軸座標位置
400, # Y軸座標位置
duration=0.2, # (X,Y)座標へのマウス移動速度
)
マウスの位置情報を取得する
マウスの現在位置を取得するには、pyautogui.position()
関数を用いて次のように記述します。
# マウスの現在位置取得
pyautogui.position()
# 出力イメージ
# Point(x=503, y=664)
マウスをクリックする
マウスのクリック操作を実現するには、pyautogui.click()
関数を用いて次のように記述します。
ひな型コード
# マウスクリック
pyautogui.click(button="left")
特定の位置座標でマウスクリック
位置座標で指定した場所でクリック操作を実現したい場合、次のように記述します。
# マウスクリック(位置座標を指定)
pyautogui.click(500, # X軸座標位置
500, # Y軸座標位置
button = "left", # 左クリック
)
マウスの右クリック
右クリック操作は以下のコードで実現できます。
# マウスクリック(右クリック)
pyautogui.click(500, # X軸座標位置
500, # Y軸座標位置
button = "right", # 左クリック
)
マウスのダブルクリック
ダブルクリック操作は以下のコードで実現できます。
# ダブルクリック
pyautogui.doubleClick(500, # X軸座標位置
500, # Y軸座標位置
)
マウスをドラッグ&ドロップする
ドラッグとは、マウスのボタンを押しながら移動することを指します。ドロップとは、マウスのボタンを離すことを指します。ドラッグ&ドロップは、例えばファイルをフォルダ間で移動するときに有効な操作です。
マウスのドラッグ&ドロップを実現するには、以下のコードを用います。
# ドラッグ
pyautogui.dragTo(500, # X軸座標位置
500, # Y軸座標位置
button="left" # ボタン操作(左クリック)
)
# ドロップ
pyautogui.dragRel(600, # X軸座標位置
600, # Y軸座標位置
button="left" # ボタン操作(左クリック)
)
マウスホイールを操作する(画面スクロール)
マウスホイールを上下に回転させる操作をPythonで実現したい場合、scroll()関数を用います。
pyautogui.scroll(200)
【参考】Pythonで面倒な作業を自動化!手法一挙公開中!
当サイトでは日々面倒な作業をPythonで自動化する方法を多数配信しております。日々の作業が飛躍的効率化できること間違いなしですので、以下気になった記事があれば併せてご覧ください。
【面倒なタスクをPythonで解決!】作業効率化の人気記事一覧
【参考】Pythonとは?・実現できること
最後に
お問い合わせフォーム
上記課題に向けてご気軽にご相談下さい。
お問い合わせはこちら