26

Pythonを使用してWindows環境でデスクトップアクティビティを自動化したい。どのようにそれを行うことができますか?いくつかの例も役立ちます。

デスクトップアクティビティとは、マウスとキーボードの制御、アクティブなウィンドウプロパティへのアクセス、デスクトップ上のアイコンのダブルクリック、ウィンドウの最小化と最大化、キーボードを介した入力ポップアップウィンドウへのデータの入力などのアクションを意味します。

4

6 に答える 6

22

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:

enter image description here

and use them in your code:

enter image description here

于 2012-08-06T11:13:02.157 に答える
8

Python 経由でアクセスできる Windows のユーザー インターフェイスを自動化するには、さまざまな方法があります (ctypesまたは Python ウィンドウ バインディングの一部を使用)。

  1. Raw Windows API --Get/SetCursorPosマウスの場合、HWND APIGetFocusなどGetForegroundWindow

  2. AutoIt-- 自動化スクリプト言語: Calling AutoIt Functions in Python

  3. Microsoft Active Accessibility ( MSAA) / WinEvent -- Win95 のアクセシビリティ API を介して UI を問い合わせるための API。

  4. UI/Automation ( UIA) -- MSAAVista で導入された の代替 (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

于 2012-08-06T10:36:13.357 に答える
8

オートマを試すことができます。

これは、非常に使いやすい 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 人です。

于 2013-07-20T07:10:59.710 に答える
0

ClointFusionを試すことができます

これも、他のパッケージの中でPyAutoGUIを内部的に利用する Python ベースの RPA プラットフォームです。

フレンドリーなブラウザー ベースのドラッグ アンド ドロップ BOT ビルダー: DOST があります。

100 以上の使いやすい関数を見つけることができます。

  1. ユーザーからの入力を受け取る 6 つの GUI 関数
  2. マウス操作で4つの機能
  3. ウィンドウ操作に関する 6 つの機能 (Windows OS でのみ動作)
  4. ウィンドウ オブジェクトに対する 5 つの関数 (Windows OS でのみ機能)
  5. フォルダ操作に関する8つの機能
  6. Excel 操作の 28 の関数
  7. キーボード操作に関する 3 つの機能
  8. スクリーンスクレイピング操作に関する 5 つの機能
  9. ブラウザ操作に関する11の機能
  10. アラートメッセージの4つの機能
  11. 文字列操作に関する 3 つの関数
  12. 絵文字、写真のキャプチャ、フラッシュ (ポップアップ) メッセージなどに関連するさまざまな機能の負荷

免責事項: 私は ClointFusion の開発者の 1 人です。

于 2021-10-12T14:08:23.447 に答える