web-dev-qa-db-ja.com

スクリプトからWindows GUIプログラムを駆動する

Windowsシミュレーションパッケージを使用して、毎回わずかに異なるオプションで繰り返しタスクを実行する必要があります。

私は繰り返しのクリックが嫌いなので、怠惰と人間が導入するエラーの量の両方の理由から、このプログラムを自動的に実行したいと思います。問題のプログラムはスクリプトをサポートしていません。API、COM、nada、nyet、nravinはありません。私の知る限り、このプログラムを自動的に駆動する唯一の方法は、人間(つまりキーボードとマウスのマクロ)を模倣することです。

私はAutoHotKeyを認識していますが、それが私が望んでいることをするとは思いません。 (またはそれは私が望むことをするかもしれませんが、そのスクリプト言語は恐ろしいです。)

要件は次のとおりです。

  • アクション間の時間遅延、またはアクションをトリガーするイベント検出を許可する必要があります。

    シミュレーションの実行には最大10分かかることがあるため、GUIドライバーはシミュレーションが完了するまで待機してから新しいシミュレーションを開始する必要があります。

    これを行う1つの方法は、10分間待って、シミュレーションが終了したことを期待することです。別の方法は、イベント駆動型にすることです。つまり、「シミュレーション実行中...」ダイアログが消えて「シミュレーション完了」ダイアログに置き換わるのを監視します。

  • 複雑なキーボード入力の構成を許可する必要があります。

    必要なキーボード入力の一部は、シミュレーションの実行ごとに異なります。たとえば、シミュレーションの説明は[Project name][Scenario name][Option 1][Option 2]...そして、これはシミュレーションごとに入力する必要があります。

    AutoHotKeyでは基本的なレベルの入力のカスタマイズが可能であることは承知していますが、ドキュメントを少し読んだだけで、スクリプト言語はある種の奇妙な恐怖のように見えます。

  • これは仕事用であるため、どのソリューションも商用利用には無料である必要があります。

上記の基準に当てはまるすべてのソリューションを受け入れますが、Pythonから駆動できるものにはstrong設定があります。しかし、私は自分がやりたいことを実行するためにカスタマイズできる自動化されたGUIテストツールも受け入れます。おそらく、ブラウザでは Selenium に相当するWin32 GUIですか? -カスタム出力またはその他の機能するものを生成するキーボードマクロレコーダー.

23
Li-aung Yip

Autohotkeyをもう一度見てみましょう。あなたの要件から、それは仕事に適しているようです。

または、MicrosoftのUIオートメーションを確認します: http://msdn.Microsoft.com/en-us/library/ms747327.aspx また、白: http://white.codeplex.com/

5
Cilvic

Sikuliは、画像(スクリーンショット)を使用してグラフィカルユーザーインターフェイス(GUI)を自動化およびテストするビジュアルテクノロジーです。 Sikuliには、JythonのビジュアルスクリプトAPIであるSikuli Scriptと、スクリーンショット付きのビジュアルスクリプトを簡単に作成するための統合開発環境であるSikuli IDEが含まれています。 Sikuliスクリプトは、内部APIのサポートなしで画面に表示されるものをすべて自動化します。 Webページ、Windows/Linux/Mac OS Xデスクトップアプリケーション、またはiphoneまたはAndroidシミュレータで実行されているアプリケーション、またはVNCを介して実行されているアプリケーションをプログラムで制御できます。

Sikuli を見てください。これでうまくいきました。

11
Adam

Automa をご覧ください。Pythonで記述されています。スタンドアロンツールとして、または独自のスクリプトのPythonライブラリとして使用できます。

from automa.api import *

クリック、プレス、書き込みなどのコマンドを使用して、Windowsアプリケーションを自動化できます。

自動化スクリプトのいくつかの例は http://www.getautoma.com/blog/category/ui-automation-examples にあります。

免責事項:私はオートマの開発者の一人です。

7
Tytus

これを見てください https://pywinauto.github.io/

pythonスクリプト自体を使用して、Windowsアプリケーションを制御できます。

利点は次のとおりです。

  • 新しい言語/構文を学ぶ必要はありません
  • 他の既存のスクリプトと簡単に統合
5
Hetal

PyAutoGUIライブラリ をPythonに使用できます。これはWindows、macOS、Linuxで動作します。

アクション間の時間遅延を許可する必要があります。

各キーの間に4分の1秒のポーズを入れて入力する例:

import pyautogui
pyautogui.typewrite('Hello world!', interval=0.25)

PyAutoGUIを呼び出すたびに2.5秒のポーズを設定する例を次に示します。

pyautogui.PAUSE = 2.5

複雑なキーボード入力の構成を許可する必要があります。

チェックアウト キーボードコントロール関数 ここで、pyautogui.typewriteを使用して何かを入力できます。変数を渡して、複雑なキーボード入力を許可できます。

アクションをトリガーするイベント検出。

locate functions を使用して、画面上で視覚的に何かを見つけ、それに基づいて単純なループ内で条件を作成できます。

ソリューションは商用利用のために無料である必要があります。

商用利用を許可するBSDの下でライセンスされています。


以下も参照してください。

1
kenorb

RIATest はPythonを使用していませんが、それ以外は請求書に適合します。これはSeleniumに似ていますが、Win32ウェブ。

RIATestはWindows UIオートメーションAPIを使用し、GUIをUIオートメーションに適切に公開するすべてのWindowsアプリケーション(すべてのネイティブアプリと.NETアプリを含む)を駆動できます。

免責事項:私はRIATestの会社であるCogitekで働いています。

0
TN.