PyAutoGUIを始める第一歩と基本的な使い方を紹介します

Excel・Excel VBA

みなさん,こんにちは.
シンノユウキ(y_stadio)です.

今回はVBAユーザーフォームのGUIテストをPyAutoGuiで自動化する連載の第2回.PyAutoGUIを始める第一歩と,基本的な使い方について紹介したいと思います.

では行きましょう!

前回のまとめ

前回の記事はこちらです:

前回はVBAのユーザーフォームのGUIテストの面倒さ,そのテストにPyAutoGUIを使用するメリットなどを紹介しました.

他のアプリケーションにはあるテスト自動化ツールも,ユーザーフォームの場合は使用できないため,GUIテストは面倒なものになるのでした.

また,PyAutoGUIは完全に無料なこと・Pythonで書けること・画像認識機能が使えることなどから,非常におすすめなツールであることを紹介しました.

今回はその続きとして,PyAutoGUIを始める第一歩と,基本的な使い方について紹介したいと思います.

PyAutoGUIの始め方

PyAutoGUIとは?

PyAutoGUIは,マウスやキーボード操作を制御するためのPythonのモジュールです.公式ドキュメントは以下です:

Pythonのインストール

PyAutoGUIを使用するためには,当然ながらPythonをインストールする必要があります.それぞれの環境に合わせてインストールしてください.

インストールのためには,以下の記事などを参考にしてください:

PyAutoGUIのインストール

では,PyAutoGUIを使っていきたいと思います.pipを活用することで簡単にインストールできます:

pip install pyautogui

PyAutoGUIのインポート

PyAutoGUIを使うために,まずはモジュールをインポートします:

import pyautogui as pg

これで,PyAutoGUIのメソッドなどをpgとして使うことができます.

PyAutoGUIの基本的な使い方

クリック

では,画面の座標を指定して,クリックする方法を紹介します.そのためには,クリックしたい場所の座標を知る必要があります.PyAutoGUIには,現在マウスカーソルがある場所の座標を調べる関数があります.以下を実行することで,現在のマウスカーソルがある場所の座標を知ることができます:

position = pg.position()
print(position)
>>Point(x=1253, y=455)

上記のように,x座標とy座標で帰ってきます.これでクリックしたい座標などを取得しましょう.ちなみに,座標は左上が(0, 0)です.

実際にクリックするコードは以下のようになります:

pg.click(
    x=100, 
    y=100, 
    pause=1.0,
    clicks=1, 
    interval=0, 
    button='left'
)

引数がいくつかありますね.

  • x: クリックする場所のx座標を指定します.スクリーンでいうところの横位置です.
  • y: クリックする場所のy座標を指定します.スクリーンでいうところの縦位置です.
  • pause: クリックした後に処理を停止する時間を指定します.秒で指定しますので,1.0 と指定すると,クリックした後に1秒処理を中断します.
  • clicks: クリックする回数を指定します.を指定すると1度だけクリックします.2を指定するとダブルクリックになりますね.
  • interval:  クリックの間の時間の間隔を指定します.clicksで2以上の数を指定した場合のみ有効です.clicks2interval1.0の場合,1度クリックして2度めのクリックまでに1秒の間隔が空きます.
  • button:  クリックするボタンを指定します.初期値は'left' です.'right' を指定すると右クリックしてくれます.

といった感じです.ぜひ自分の環境で試してみてください.

キーボード

次はキーボードのタイプです.タイプはタイプでもキーボードを打つ方のタイプです.typewriteを使用します:

pg.typewrite('a')

これでキーボードをタイプできます.

ショートカットキーはhotkeyを使用します:

pg.hotkey('ctrl', 'c')

また,一連の文字列を入力したい場合はtypewriteの引数に文字列を使用します:

pg.typewrite("Hello, World!")

これでキーボードをタイプし,文字を入力できます.

ただし,日本語を入力する場合には注意が必要です.typewriteの引数に日本語を指定することができません.IMEモードが日本語入力の状態だと,ローマ字で指定することもできますが,変換などは使えませんので,実用的ではありません.

そこで,日本語の文字を入力したい場合はコピーペーストを活用します(参考):

import pyperclip
 
pyperclip.copy("文字を入力")
pg.hotkey('ctrl', 'v')

ライブラリ:pyperclipを使用することで,クリップボードに文字列を保存できます.そして,それをPyAutoGUIのhotkeyを使用することでペーストします.なんとなく原始的で力技な方法ですが,一応これで日本語を入力できます.様々なライブラリの助けを借りることができるのもPythonの魅力ですね.

スクリーンショット機能

この機能を活用できるか否かでGUI自動化の効率が大きく変わります.この機能は,スクリーン上から,指定した画像を探し出す機能です.たとえば,スクリーン内から特定のアイコンをクリックしたいけれど,そのアイコンがどこに現れるかわからない場合(つまり事前に座標を指定できない場合),そのアイコンの画像を予め指定しておくと,そのアイコンを検索し,その座標を取得することができるのです.

これには,locateCenterOnScreenを使用します:

filename = "sample.png"
location = pg.locateCenterOnScreen(filename)

これでlocation にfilename に指定した画像の座標が代入されます.あとはこれをクリックするなりすると良いでしょう.

まとめ

今回はPyAutoGUIの基本的な使い方について紹介しました.次回は,実際にユーザーフォームを動かしてみたいと思います.ご期待下さい!

連載目次

  1. PyAutoGuiでVBAのユーザーフォームのGUIテストを自動化する!
  2. PyAutoGUIを始める第一歩と基本的な使い方を紹介します現在のページ
  3. PyAutoGUIでユーザーフォームの 簡単なGUIテストをやってみる
  4. PyAutoGUIでユーザーフォームのテキストボックスを操作する方法
  5. PyAutoGUIでユーザーフォームのコンボボックスを操作する方法
  6. PyAutoGUIでユーザーフォームのチェックボックスのチェックを全て外す方法|画像認識の活用
  7. PyAutoGUIでユーザーフォームのテストデータをExcelファイルから読み取る方法
  8. PythonファイルをEXEファイル化する「Pyinstaller」の使い方を紹介します

 

タイトルとURLをコピーしました