LoginSignup
0
0

More than 3 years have passed since last update.

pythonでショートカットウィンドウみたいなRPAを作った備忘録(1)

Last updated at Posted at 2021-05-11

Pythonのpyautoguiなどのライブラリを使った自作RPAの備忘録。
ライブラリの使い方と実装サンプル。

↓↓↓自作RPAのソースコード↓↓↓
テキストと画像で簡単操作。
ゲームのスキルやアイテムをセットできるショートカットウィンドウをイメージ。
ソースコード
動画

インストール

  • pyautogui 自動化ライブラリ
  • opencv 1
  • pynput キー・マウス監視ライブラリ(バージョン1.6.4)2
  • pyperclip クリップボード操作ライブラリ
  • playsound 音楽再生ライブラリ
install
pip install pyautogui
pip install opencv-python
pip install pynput==1.6.4
pip instal pyperclip
pip install playsound

pyautoguiチュートリアル

できること

  • マウス操作
  • キーボード操作
  • 画面認識(画面の座標・スクリーンショット取得、画面から画像認識)

マウス操作

pyautogui-click
# GUI automation
import pyautogui

# 画面サイズの取得
x, y = pyautogui.size()
x, y = x / 2, y / 2
x2, y2 = x / 3, y / 3
# カーソルの移動速度(秒)
clickduration = 0.5
# クリック
pyautogui.click(x,y,duration=clickduration)
# ダブルクリック
pyautogui.doubleClick(x2,y2,duration=clickduration)
# 右クリック
pyautogui.rightClick(x,y,duration=clickduration)
# カーソル移動
pyautogui.moveTo(x2,y2,duration=clickduration)
# ドラッグ(クリック)
pyautogui.dragTo(x,y,duration=clickduration,button='left')
# スクロール(ーは下方向)
pyautogui.scroll(-100)

キーボード操作
typewriteは半角全角の制御が別途必要。
回避策は
入力文字をクリップボードにコピーし、hotkeyを使いctrl+vによる貼り付けなど

pyautogui-keyboard
# GUI automation
import pyautogui

# キー入力
pyautogui.press('p')
# キーを押し続ける
pyautogui.keyDown('ctrl')
# キーを離す
pyautogui.keyUp('ctrl')
# 2キー入力
pyautogui.hotkey('ctrl','c')
# 文字列入力
pyautogui.typewrite('typewrite',interval=1)
# 複数キー入力は以下で実装可能
pyautogui.keyDown('win')
pyautogui.keyDown('shift')
pyautogui.press('s')
pyautogui.keyUp('win')
pyautogui.keyUp('shift')

画面の取得と画像認識

pyautogui-locateonscreen
# GUI automation
import pyautogui

# ターゲット画像のパス
imgpath = 'sample1.png'
# 画像認識精度(0.0~1.0:値が大きいほど精度が高くなる)
confidence = 0.8
# 画面からターゲット画像を取得
target = pyautogui.locateOnScreen(imgpath,confidence=confidence)
# ターゲットの中心座標を取得
x, y = pyautogui.center(target)
# クリック
pyautogui.click(x,y)

pynputチュートリアル

できること

  • マウス操作の検出
  • キーボード操作の検出
pynput
# マウス・キーボード監視
import pynput

# キーを押したときの処理
def press(key):
    try:
        # 英字キーを入力したときはこっちに行くみたい
        print(key.char)
    except AttributeError:
        # Enterやタブなど特殊なキーはこっち
        print(key)

# キーを離したときの処理
def release(key):
    print(key)
    if key == pynput.keyboard.Key.esc:
        return False

# クリックしたときの処理
def click(x, y, button, pressed):
    print(x, y)
    # 押したときだけ処理するならpressedを追加
    if pressed:
        print('pressed')
    else:
        print('release')

# キーボードリスナー起動 押したときと離したときのイベントを取得
keylistener = pynput.keyboard.Listener(on_press=press,on_release=release)
keylistener.start()

# マウスリスナー起動 クリックしたときのイベントを取得
with pynput.mouse.Listener(on_click=click) as mouselistener:
    mouselistener.join()

参考:【Python RPA】マウス・キーボード操作を同時に検知・取得する方法(pynput)

pyperclipチュートリアル

できること

  • クリップボード監視
pyperclip
# クリップボード監視
import pyperclip

# クリップボードにテキストを格納
pyperclip.copy('test')

# クリップボードの内容を取得
clipboard = pyperclip.paste()

print(clipboard)

プログラムを実行するとクリップボードが変更される


RPAプログラムのイメージ

GUI

  • ゲームのスキルバーをイメージ。
  • アイコンが横に並んでおり、アイコンをクリックするとRPAプログラムが実行される。
  • 実行中は、赤い太枠をつける。
  • もう一度アイコンをクリックするか実行し終えると枠が消える。

RPAプログラム本体

  • 命令の書かれたテキストファイルを読み込み、それに沿って処理を実行する。
  • テキストを一行ずつ解析、処理を行う。
  • 画面認識に使用する画像はあらかじめ用意しておく。
テキストファイルイメージ
click/sample.png/     # sample.pngをクリック
typing/Hello World!/  # Hello World! と入力
press/enter/          # Enterキーを押す。
end/                  # 終了

今回はここまで。
次回はRPAプログラム本体のコーディングについて説明する予定です。


  1. pyautoguiのオプションに必要 

  2. 1.6.4以外だとpyinstallerでexe化できない 

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0