Pythonコピペプログラミング #004 マウスカーソル操作

Ptyhonコピペ用 code は以下の通り。 既存のソースコードに入れる場合には変数名が重複しないように注意すること。
RPA(Robotic Process Automation)を実装する方法は色々あるが最も素朴なやり方はこんな感じ。

  1. クリックしたい位置(座標)の特定
  2. オートクリック
  3. オートクリックの応用

1. クリックしたい位置(座標)の特定

# -*- coding: utf-8 -*-
"""
    author: serpent
    creation datetime: 2021-12-18 18:08:13.375911
    filename: studypyautogui_copipe.py
    function: カーソル位置を読み取る+カーソルを動かすデモ
    explanation: 
        1   t_duration に数値を入力する。
        2   コード実行後、3[s]以内にカーソルを座標を取得したい位置に置く。
        3   画面右上に t_duration [s] かけてカーソルが移動する。
        4   画面左上から右下の方向へ t_duration [s] かけてカーソルが移動する。
        5   その後 t_duration [s]かけてカーソルがもとの位置まで戻る。
        6   ターミナル上にカーソルの位置を表示する。
"""

# ------------------------------------------------------------------- #
# --- 設定 ---------------------------------------------------------- #
# ------------------------------------------------------------------- #
from time import sleep
import pyautogui
import datetime
# ---アプリ実行時間計測用--------------------------------------------- #
time_start = datetime.datetime.now()
print(f"start:{time_start}")
# ---機能上のメイン処理----------------------------------------------- #
sleep(3)

curmus_x,curmus_y = pyautogui.position() # 現在のマウス位置(x,y)


t_duration = 3

# カーソルを動かす
pyautogui.moveTo(1, 1, t_duration)
pyautogui.moveTo(400, 400, t_duration)
pyautogui.moveTo(curmus_x, curmus_y, t_duration) #もとの位置に戻る

print(r"カーソル位置の座標(x,y)=({0}, {1})".format(curmus_x,curmus_y))

# - - - - - - - - - - - - - - - - - - - - - - - - - -

# ------------------------------------------------------------------- #
time_end = datetime.datetime.now()
print(f"start:{time_start}")
print(f"running_time:{time_end - time_start}")
print('done!')

# end_of_file: this line is 48th

2. オートクリック

# -*- coding: utf-8 -*-
"""
    author: serpent
    creation datetime: 2021-12-18 18:08:13.375911
    filename: studypyautogui_click_copipe.py
    function: マウスクリックを自動で行う
    explanation: 
        1   画面上の座標(curmus_x, curmus_y)の値を設定
        2   click_times クリック回数の値を入力する。
        3   click_interval クリック間隔[s]の値を入力する。
        4   click_left 左クリックなら"left"という文字列を入力する。
        5   コード実行で上記1で指定した座標に移動してクリックする。
"""

# ------------------------------------------------------------------- #
# --- 設定 ---------------------------------------------------------- #
# ------------------------------------------------------------------- #
from time import sleep
import pyautogui
import datetime
# ---アプリ実行時間計測用--------------------------------------------- #
time_start = datetime.datetime.now()
print(f"start:{time_start}")
# ---機能上のメイン処理----------------------------------------------- #
sleep(3)

# 設定
curmus_x = 500              # 画面上のx座標(幅方向)
curmus_y = 500              # 画面上のy座標(高さ方向)
click_times     = 1         # クリック回数
click_interval  = 0.005     # 2クリック以上するときの間隔[s]
click_left      = 'left'    # 左クリックか右クリックか

# 実際の動作関数
pyautogui.click(curmus_x, curmus_y, click_times, click_interval, click_left)  # 左クリック
# - - - - - - - - - - - - - - - - - - - - - - - - - -

# ------------------------------------------------------------------- #
time_end = datetime.datetime.now()
print(f"start:{time_start}")
print(f"running_time:{time_end - time_start}")
print('done!')

# end_of_file: this line is 44th

こんな感じでターミナルに出力される。

オートクリックの応用

上記1章に示したプログラムでクリックしたい画面上の座標を特定し、上記2章に示したプログラムにその座標をコーディングしてPythonでマウスクリックさせることができたが、ブラウザの特定のボタンなどをクリックさせたい場合、ウィンドウの移動やwebページのレイアウトが若干変更されたなどで、常に同じ位置にあるとは限らないため、このような方法は現実的ではない。

これを解決するにはクリックしたいボタンなど動作の起点となるものを画像として取得し、テンプレートマッチングを利用してクリック位置の座標を特定することが望ましい。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

トップに戻る