Pythonを使用してWindows環境でデスクトップアクティビティを自動化したい。どのようにそれを行うことができますか?いくつかの例も役立ちます。
デスクトップアクティビティとは、マウスとキーボードの制御、アクティブなウィンドウプロパティへのアクセス、デスクトップ上のアイコンのダブルクリック、ウィンドウの最小化と最大化、キーボードを介した入力ポップアップウィンドウへのデータの入力などのアクションを意味します。
Pythonを使用してWindows環境でデスクトップアクティビティを自動化したい。どのようにそれを行うことができますか?いくつかの例も役立ちます。
デスクトップアクティビティとは、マウスとキーボードの制御、アクティブなウィンドウプロパティへのアクセス、デスクトップ上のアイコンのダブルクリック、ウィンドウの最小化と最大化、キーボードを介した入力ポップアップウィンドウへのデータの入力などのアクションを意味します。
Have a look at SIKULI.
Sikuli is a visual technology to automate and test graphical user interfaces (GUI) using images (screenshots).
SIKULI uses a very clever combination of taking screenshots, and embedding them into your python (it's jython, actually) script.
Take screenshots:
and use them in your code:
Python 経由でアクセスできる Windows のユーザー インターフェイスを自動化するには、さまざまな方法があります (ctypes
または Python ウィンドウ バインディングの一部を使用)。
Raw Windows API --Get/SetCursorPos
マウスの場合、HWND APIGetFocus
などGetForegroundWindow
AutoIt
-- 自動化スクリプト言語: Calling AutoIt Functions in Python
Microsoft Active Accessibility ( MSAA
) / WinEvent -- Win95 のアクセシビリティ API を介して UI を問い合わせるための API。
UI/Automation ( UIA
) -- MSAA
Vista で導入された の代替 (XP SP3 IIRC で利用可能)。
ユーザー インターフェイスを自動化してテストすることは、簡単な作業ではありません。あなたをつまずかせる落とし穴がたくさんあります。
テストしているプラットフォームで動作することを確認できるように、自動化フレームワークを自動化された方法でテストすることをお勧めします (自動化のAPI
失敗とアプリケーションの失敗を識別するため)。
もう 1 つの考慮事項は、ローカリゼーションの処理方法です。また、最小化/最大化/... の名前もローカライズされており、アプリケーションとは異なる言語 (システム ロケールとユーザー ロケール) である可能性があることにも注意してください。
擬似コードではMSAA
、アプリケーションを最小化するプログラムは次のようになります。
window = AccessibleObjectFromWindow(FindWindow("My Window"))
titlebar = [x for x in window.AccessibleChildren if x.accRole == TitleBar]
minimize = [x for x in titlebar[0].AccessibleChildren if x.Name == "Minimize"]
if len(minimize) != 0: # may already be minimized
mimimize[0].accDoDefaultAction()
MSAA
(object: IAccessible, childId: int)
アクセス可能なアイテムはペアとして保存されます。ここでは、呼び出しを正しく行うために注意が必要です (たとえばget_accChildCount
、 のみを使用するIAccessible
ため、childId
が 0 でない場合は、 を呼び出す代わりに 0 を返す必要がありますget_accChildCount
)。
IAccessible
"this object does not support this property"
呼び出しは、示すためにさまざまなエラー コードを返すことができDISP_E_MEMBERNOTFOUND
ますE_NOTIMPL
。
ウィンドウの状態に注意してください。ウィンドウが最大化されてから最小化された場合、復元によってウィンドウが最大化された状態に復元されるため、ウィンドウを通常の/ウィンドウ化された状態に戻すには、再度復元する必要があります。
MSAA
およびAPI はマウスのUIA
右ボタンのクリックをサポートしていないため、Win32 API
トリガーするには を使用する必要があります。
モデルは、MSAA
ツリービューの階層情報をサポートしていません。フラット リストとして表示されます。一方、は表示されている要素のみを列挙するため、折りたたまれているツリーUIA
内の要素にはアクセスできません。UIA
オートマを試すことができます。
これは、非常に使いやすい Python で書かれた Windows GUI 自動化ツールです。たとえば、次のことができます。
# to double click on an icon on the desktop
doubleclick("Recycle Bin")
# to maximize
click("Maximize")
# to input some text and press ENTER
write("Some text", into="Label of the text field")
press(ENTER)
利用可能なコマンドの完全なリストは、ここにあります。
免責事項: 私は Automa の開発者の 1 人です。
ClointFusionを試すことができます
これも、他のパッケージの中でPyAutoGUIを内部的に利用する Python ベースの RPA プラットフォームです。
フレンドリーなブラウザー ベースのドラッグ アンド ドロップ BOT ビルダー: DOST があります。
100 以上の使いやすい関数を見つけることができます。
免責事項: 私は ClointFusion の開発者の 1 人です。