この記事では、Pythonの「pywinauto」ライブラリを使用して、Windowsアプリケーションのクリック操作を自動化する方法を初心者向けにわかりやすく解説します。インストールからエラーハンドリングまで、実務で役立つ内容を含めて紹介します。
関連ページ
ライブラリのインポート
まずは、pywinautoライブラリをインポートします。以下のコードを使って、必要なモジュールを読み込みます。
import pywinauto.application
import pywinauto.mouse
from pywinauto import Desktop
import logging
このコードでは、アプリケーション操作に必要なモジュールと、ロギング用の標準ライブラリをインポートしています。
アプリケーションオブジェクトの生成
pywinautoでアプリケーションを操作するには、まず「Application」オブジェクトを作成します。
app = pywinauto.application.Application()
これにより、アプリケーション操作のためのベースオブジェクトが生成されます。
アプリケーションの起動
対象アプリケーションを起動するには、start()
メソッドを使用します。以下は、メモ帳アプリを起動する例です。
app.start("notepad.exe")
Windowsアプリのパスを指定することで、指定したアプリケーションを起動できます。
ウィンドウ選択
起動したアプリケーションのウィンドウを特定するには、window()
メソッドを使用します。
window = app.window(title="無題 - メモ帳")
ウィンドウのタイトルやクラス名を指定して、対象のウィンドウを取得します。
ウィンドウのアクティブ化
操作対象のウィンドウをアクティブ化するには、set_focus()
メソッドを使用します。
window.set_focus()
これにより、指定したウィンドウがフォーカスを持ち、操作可能な状態になります。
コントロール選択
ウィンドウ内の特定のコントロールを選択するには、child_window()
メソッドを使用します。
button = window.child_window(title="OK", control_type="Button")
タイトルやコントロールタイプを指定して、ボタンなどのコントロールを選択します。
- title (文字列, オプション)
- コントロールのタイトル(ラベルやテキスト)を指定します。
- 例:
title="OK"
- control_type (文字列, オプション)
- コントロールの種類を指定します。
- 例:
control_type="Button"
,control_type="Edit"
- auto_id (文字列, オプション)
- コントロールの一意な自動生成IDを指定します。
- 例:
auto_id="12345"
- class_name (文字列, オプション)
- コントロールのクラス名を指定します。
- 例:
class_name="Button"
- found_index (整数, オプション)
- 同じ条件に一致する複数のコントロールが存在する場合、その中のインデックスを指定します。
- 0から始まるインデックスです。
- 例:
found_index=1
で2番目の一致するコントロールを選択。
- parent (オブジェクト, オプション)
- 親コントロールを指定します。
- 指定しない場合は現在のウィンドウが親として扱われます。
クリックの実行
選択したコントロールに対してクリック操作を行うには、click()
メソッドを使用します。
button.click()
クリックの種類や回数、座標を指定することもできます。
- coords (タプル形式, オプション)
- クリックする位置をウィンドウ内の相対座標
(x, y)
で指定します。 - 指定しない場合は、コントロールの中央をクリックします。
- 例:
coords=(50, 20)
でコントロール内の左上から x=50, y=20 の位置をクリック。
- クリックする位置をウィンドウ内の相対座標
- double (bool, オプション)
- ダブルクリックを行うかどうかを指定します。
- デフォルト値は
False
。 - 例:
double=True
でダブルクリック。
- absolute (bool, オプション)
- 座標をウィンドウ内の相対座標ではなく画面全体の絶対座標として解釈するかどうかを指定します。
- デフォルト値は
False
(ウィンドウ内の相対座標を使用)。 - 例:
absolute=True
で座標を画面全体の絶対座標として指定。
コントロールの操作
コントロールにテキストを入力する場合は、type_keys()
メソッドを使用します。
textbox = window.child_window(control_type="Edit")
textbox.type_keys("こんにちは")
これにより、テキストボックスに「こんにちは」と入力されます。
- text (文字列, 必須)
- テキストボックスや入力可能なコントロールに送信する文字列を指定します。
- 例:
text="こんにちは"
- with_spaces (bool, オプション)
- スペースを含む文字列をそのまま入力するかどうかを指定します。
- デフォルト値は
True
。 - 例:
with_spaces=False
でスペースを無視して入力。
- with_tabs (bool, オプション)
- タブ文字を含む文字列をそのまま入力するかどうかを指定します。
- デフォルト値は
False
。 - 例:
with_tabs=True
でタブ文字を含む文字列を入力。
- pause (float, オプション)
- 各文字を入力する間隔(秒)を指定します。
- デフォルト値は
0.05
(50ms)。 - 例:
pause=0.1
で各文字を100ms間隔で入力。
- with_newlines (bool, オプション)
- 改行文字 (
\n
) をそのまま入力するかどうかを指定します。 - デフォルト値は
False
。 - 例:
with_newlines=True
で改行文字を含む入力を実行。
- 改行文字 (
- turn_off_numlock (bool, オプション)
- NumLockを一時的にオフにするかどうかを指定します。
- デフォルト値は
True
。 - 例:
turn_off_numlock=False
でNumLockを保持。
アプリケーションの終了
操作が終了したら、アプリケーションを終了させます。
app.kill()
これにより、アプリケーションが安全に終了します。
コメント