pyautoguiのあれこれ


はじめに

今回は自作RPAに心強い味方のpyautoguiについて詳しく紹介していきます!
こちら ~会社の業務をRPAで効率化した話~でも使用したライブラリです

開発環境

  • iMac 2019 Big sur(Boot Campでwindows使用)
  • Python 3.8.6
  • IDE 3.8
  • PyAutoGUI 0.9.51

インストール方法

  • macOS&Linux > python3 -m pip install pyautogui
  • Windows > pip install pyautogui

キーボード操作編

-文字入力

import pyautogui

pyautogui.write('Hello python!')
pyautogui.write('Hello python!', interval = 0.25)

interval=(秒)1文字入力する間隔、省略すると一瞬
日本語入力は直接は不可能
キャラ文字のみ対応、「shift」や「F1」キーはwrite()では使えない

-キー操作

import pyautogui

pyautogui.press('enter')
pyautogui.press(['left','left','left'])    #or pyautogui.press('left', presses=3)
pyautogui.keyDown('shift')
pyautogui.keyUp('shift')
pyautogui.hotkey('ctrl','c')
機能
press() 押すだけ。['','']またはpressesの指定で連打可能
keyDown() 押し続ける。
keyUp() keyDown()の解除
hotkey() 2つ以上のキーの同時押し

使えるキーコード一覧

-日本語の入力方法

import pyautogui

pyautogui.press('kanji')
pyautogui.write('ohayougozaimasu.')
pyautogui.press('enter')

英字から、半角/全角変換キーを押してローマ字入力させる方法が一番簡単にできます。
漢字変換は少し難しいような気がしますが、、、
定型文のコピペであればpyautogui.hotkey()でなんとかなるでしょう!

マウス操作編

-ムーブ、ドラッグ系

import pyautogui

pyautogui.size()        #画面のサイズ取得    return -> (width,height)
pyautogui.position()    #現在のマウスの座標  return -> (X,Y)

pyautogui.moveTo(X,Y)
pyautogui.move(width,height)
pyautogui.dragTo(X,Y,button='left')
pyautogui.drag(width,height,button='right')
機能
moveTo(X,Y) 画面の座標(X,Y)に移動する
move(width,height) 現在のマウスの座標からwidth,height分動かす
dragTo(X,Y) 画面の座標(X,Y)までドラッグする
drag(X,Y) 現在のマウスの座標からwidth,height分ドラッグする

durationを指定すると動かす時間を決めることができる

-クリック系

import pyautogui

pyautogui.click()                           #現在のマウスの座標をクリック
pyautogui.click(button='right')             #右クリック
pyautogui.click(clicks=2,interval=0.25)     #0.25秒の間隔で2回クリック
pyautogui.click(x=100,y=200)                #座標(X,Y)をクリック
pyautogui.doubleClick()                     #ダブルクリック

-スクロール系

import pyautgoui

pyautogui.scroll(10)                #上に10スクロール
pyautogui.scroll(-10)               #下に10スクロール
pyautogui.scroll(10,x=100,y=100)    #座標(x,y)に移動後,上にスクロール
pyautogui.hscroll(10)               #横方向にスクロール

スクリーンショット編

sample.py
import pyautogui

pyautogui.screenshot()                         #スクリーンショット撮影
pyautogui.screenshot('hoge.png')               #スクリーンショット撮影後に'hoge.png'で保存

pyautogui.locateOnScreen('hoge.png')
pyautogui.locateAllOnScreen('hoge.png')
pyautogui.locateCenterOnScreen('hoge.png')
機能
locateOnScreen 画面上で一番最初に見つけたターゲットの(Left,Top,Width,Height)をRETURNする
locateAllOnScreen 画面上に存在するターゲット全ての(Left,Top,Width,Height)をRETURNする
locateCenterOnScreen 画面上で一番最初に見つけたターゲットの中心座標(x,y)をRETURNする

いずれも、存在しない場合はNoneを返す。

メッセージボックス編

-アラート表示

pyautogui.alert(text='入力ミスがあります',title='注意',button='OK')

戻り値 : buttonに指定したテキスト

-確認メッセージ

pyautogui.confirm(text='終了しても良いですか?',title='確認',buttons=['OK','Cancel'])

戻り値 : buttonsに指定したテキスト

-入力画面

pyautogui.prompt(text='生年月日を入力してください',title='入力',default='YYYY/MM/DD')

戻り値 : 入力したテキスト、キャンセル時はNone

-パスワード入力画面

pyautogui.password(text='パスワードを入力してください',title='パスワード',default='',mask='*')

戻り値 : 入力したテキスト、キャンセル時はNone
入力時、maskに指定した文字に置き換える

今回はこれで終わりにします!
意外とGUI用のメソッドがあって驚きです💦
それじゃ、じゃあの~✋