みなさん,こんにちは。
シンノユウキ(shinno1993)です。
今回は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
を指定すると1度だけクリックします.2
を指定するとダブルクリックになりますね. - interval: クリックの間の時間の間隔を指定します.
clicks
で2以上の数を指定した場合のみ有効です.clicks
が2
,interval
が1.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の基本的な使い方について紹介しました.次回は,実際にユーザーフォームを動かしてみたいと思います.ご期待下さい!
連載目次
- PyAutoGuiでVBAのユーザーフォームのGUIテストを自動化する!
- PyAutoGUIを始める第一歩と基本的な使い方を紹介します現在のページ
- PyAutoGUIでユーザーフォームの 簡単なGUIテストをやってみる
- PyAutoGUIでユーザーフォームのテキストボックスを操作する方法
- PyAutoGUIでユーザーフォームのコンボボックスを操作する方法
- PyAutoGUIでユーザーフォームのチェックボックスのチェックを全て外す方法|画像認識の活用
- PyAutoGUIでユーザーフォームのテストデータをExcelファイルから読み取る方法
- PythonファイルをEXEファイル化する「Pyinstaller」の使い方を紹介します