【実例あり】PyAutoGUIでsleepやPAUSEによる待機処理

 

★悩み★
・PyAutoGUIで画面遷移が完了するまで待機ってできる?
・PyAutoGUIで処理を一定時間待たさせたいけど、sleepを使えばいいの?
・キーボード入力やマウス操作ごとに一定時間待たさせるには?



こういった「悩み」に答えます。
 

★本記事の内容★
① PyAutoGUIとは
➁ PyAutoGUIでよく使う待機処理3選【sleepの利用】
➂ PyAutoGUIのPAUSEで処理ごとに待機を実現



これからご紹介する「PyAutoGUIでsleepやPAUSEによる待機処理」を実践したことで、10分くらいで「Webブラウザでページ遷移が完了するまで待つ」プログラムを作れました(下の動画参照)。
 

画像認識とsleepで待機処理を実現した例



記事の前半では「PyAutoGUIとは?」や「PyAutoGUIのインストール方法」を解説します。

記事の後半では「そもそも待機処理とは?」から「PyAutoGUIの画像認識とsleepを使った待機処理を実現する方法」までを紹介します。
  

この記事を読み終えることで、「PyAutoGUIで任意の処理が終わるまで処理を待機」できる状態になります。

 

 


 

PyAutoGUIとは?


「PyAutoGUIとは?」/「PyAutoGUIの特徴」/「PyAutoGUIのユースケース(利用場面)」に関しては、以下の記事をご覧ください。
>> 【要点】PyAutoGUIとは?初心者向けに特徴から使い方までを図解

 

また、PyAutoGUIのインストール方法に関しては、以下の記事をご覧ください。
>> 【最短5分】PyAutoGUIをWindowsにインストールする手順
>> 【最短5分】UbuntuにPyAutoGUIをインストールする手順
>> 【最短5分】MacにPyAutoGUIをインストールする手順

 

ウェブブラウザなどの画面操作を自動化をしたい場合、PyAutoGUIを使って無料で実現できます。
まずは、PyAutoGUIで「待機処理」を実現する方法から紹介しますね。


 

PyAutoGUIでよく使う待機処理3選【sleepの利用】


「PyAutoGUIでよく使う待機処理3選【sleepの利用】」に関してご紹介します。
 

★ご紹介事項★
・そもそも待機処理とは?
・メッセージボックスによる待機処理
・sleepで一定時間の待機処理
・画像認識を使った待機処理



以降で、上記の各項目に関してご説明します。
 

そもそも待機処理とは?

「そもそも待機処理とは?」に関して解説します。
 

定義を説明し、利用する場面に関して簡単にご紹介しますね。



待機処理とは、IT業界では以下の意味合いで使われることが多いです。
 

★待機処理とは?★
待機処理とは、「実行した処理が終わるまで、次の処理の実行を待つこと」です(下図参照)。

 

待機処理の例



以下の場面でよく利用されます。
 

★待機処理がよく使われる場面★
・Webブラウザのページ遷移が完了するまで次の処理を待つ
・アプリケーションの画面が切り替わるまでマウス操作を待つ
・データ収集が終わるまでデータ集計を待つ


  

メッセージボックスによる待機処理

「メッセージボックスによる待機処理」に関して説明します。
 

前処理の完了をメッセージボックスで通知し、メッセージボックスを閉じることで後続処理を実行させる方法があります。



メッセージボックスを使うことで、下の動画のような待機処理を実現できます。
 

メッセージボックスを使った待機処理の例



ちなみに、PyAutoGUIでメッセージボックスを使う方法に関しては、以下の記事をご覧ください。
>> 【最短5分】PyAutoGUIでメッセージボックスの表示方法4選

  

sleepで一定時間の待機処理

「sleepで一定時間の待機処理」に関して解説します。
 

Pythonのsleep関数を使うことで、一定時間の待つことができます。



sleep関数の構文は、以下となります。
 

★sleepのリファレンス★
処理:指定された秒だけ待つ
使い方:time.sleep(数字)
参照:sleepのリファレンス(Python公式サイト)



「sleep」を使った待機処理の書き方は、主に以下となります。
 

★使い方★
・書き方
 import time
 待機前に実行したい処理
 time.sleep(待機したい秒数)
 待機後に実行したい処理
・例
 import time
 print(‘start’)
 time.sleep(5)
 print(‘end’)
・実行結果
 start出力後、5秒待ってからendを出力する。



上記のsleepを使うことで、下の動画のように数秒待機しつつキーボードを入力できます。
 

sleepを使った例



ちなみに、上の動画のプログラムを知りたい方は、以下の記事「PyAutoGUIでwhileによる繰り返し実行するプログラムを作成」の箇所をご覧ください。
>> 【最短5分】PyAutoGUIで繰り返し実行(loop)を実現する2つの方法

  

画像認識を使った待機処理

「画像認識を使った待機処理」に関して解説します。
 

PyAutoGUIの画像認識の関数(例:locateOnScreen)とsleepとforを組み合わせて使うことが多いです。



PyAutoGUIの画像認識の関数「locateOnScreen」「sleep」「for」を組み合わせることで、「ある画像が画面上に表示されるまで待機」を実現できます。
 

「ある画像が画面上に表示されるまで待機」する処理の書き方は、主に以下となります。
 

★使い方★
・書き方
 import time
 import pyautogui as pag
 待機前に実行したい処理
 for pause_num in range(繰り返し回数):
  try:
   if pag.locateOnScreen(画面上に表示される画像):
    break
  except Exception as e:
   time.sleep(待機したい秒数)
 待機後に実行したい処理
・例
 import time
 import pyautogui as pag
 print(‘start’)
 for pause_num in range(60):
  try:
   if pag.locateOnScreen(‘sample.jpg’):
    break
  except Exception as e:
   time.sleep(1)
 print(‘end’)
・実行結果
 start出力後、sample.jpgが画面上に表示されるまで待機する。
 sample.jpgが画面上に表、または、60秒経過後、endを出力する。



上記の例を実行した結果が、下の動画になります。
 

画像認識を使った例



ちなみに、PyAutoGUIの画像認識の関数(例:locateOnScreen)に関して詳しく知りたい方には、以下の記事がオススメです。
>> 【最短5分】PyAutoGUIのlocateOnScreenで画像クリック


  

Webブラウザなどの遷移が完了するまで待機が必要な場合は、上記3つのどれかの待機処理を使ってみましょう。
以降では、PyAutoGUIの処理ごとに待機処理を実施する方法をご紹介します。


 

PyAutoGUIのPAUSEで処理ごとに待機を実現


「PyAutoGUIのPAUSEで処理ごとに待機を実現」に関してご紹介します。
 

★ご紹介事項★
① PAUSEの構文を解説
➁ PAUSEでPyAutoGUIの処理ごとに待機するプログラムを作成



以降で、上記の各項目に関してご説明します。
 

PAUSEの構文を解説

「PAUSEの構文を解説」に関して説明します。
 

PyAutoGUIからのキーボード入力ごとに待ちたい場合、PAUSEを使うと簡単に実現できます。



PAUSEの構文は、以下となります。
 

★PAUSEのリファレンス★
処理:PyAutoGUIの処理ごとに指定された秒数だけ待機する
使い方:pyautogui.PAUSE = 待機したい秒数
初期値:py.autogui.PAUSEの初期値は0.1
参照:PAUSEのリファレンス(公式サイト)



「PAUSE」を使った待機処理の書き方は、以下となります。
 

★使い方★
・書き方
 import pyautogui
 pyautogui.PAUSE = 2
 PyAutoGUIの処理
・例
 import pyautogui
 pyautogui.PAUSE = 10
 pyautogui.write(‘start’)
 pyautogui.hotkey(‘enter’)
 pyautogui.write(‘end’)
・実行結果
 start出力後、10秒待機してからendを出力する。
 その後、10秒待機してからプログラムが終了する。


  

PAUSEでPyAutoGUIの処理ごとに待機するプログラムを作成

「PAUSEでPyAutoGUIの処理ごとに待機するプログラムを作成」に関して解説します。
 

PAUSEを使ってキーボード入力ごとに待機するプログラムを作成してみましょう。



以下のプログラムを作成し、「pyautogui-pause.py」というファイル名で保存してください。
 

import pyautogui
import subprocess
import time

# メモ帳を開く
subprocess.Popen([r'c:\windows\system32\notepad.exe'], shell=True)
time.sleep(5)

# 待機時間を設定
pyautogui.PAUSE = 10

# キーボード入力
pyautogui.write('start')
pyautogui.hotkey('enter')
pyautogui.write('end')



続いて、コマンドプロンプトを起動し、作成したプログラムを以下のコマンドで実行してみましょう。

python pyautogui-pause.py



コマンド実行後、下の動画のように処理が実行された場合、「正常に作成したプログラムを実行できた」と判断できます。
  

PAUSEを使った例


  

PyAutoGUIのPAUSEを使うことで、マウス操作やキーボード入力ごとに待機を簡単に実現できます。



ちなみに、「PyAutoGUIでExcelやWordの操作を自動化する方法は?」や「Pythonを基礎から体系的に学ぶ方法は?」などを知りたい方には、以下の記事で紹介している本や教材がオススメです。
>> PyAutoGUIの入門に役に立つオススメ本や教材6選

  

【まとめ】PyAutoGUIでsleepやPAUSEによる待機処理【実例あり】


いかがでしたでしょうか?

上記で紹介した「sleep」「PAUSE」を理解していただくと、PyAutoGUIで待機処理を簡単に実現できます。

最後にもう一度内容を確認しましょう。
 

★PyAutoGUIで待機処理を実現する方法★
・待機処理とは、ある状態に遷移するまで処理を待機することである
・sleep、メッセージボックス、PAUSEを使う
・forとlocateOnScreenとsleepである画像が表示されるまで待機できる



さらに体系的にPyAutoGUIを学習したい方は、以下の記事で紹介している教材がオススメです。
>> PyAutoGUIの入門に役に立つオススメ本や教材6選

 

 


 

コメント