Skip to main content
Skip table of contents

local (JA)


ローカル・デスクトップ自動化

内容

1.はじめに

T-Plan Robot バージョン3.2では、ローカルデスクトップ上に表示されるアプリケーションの自動化サポートが導入されました。これは、Robotと1つ以上のテスト対象アプリケーション(AUT)が同じローカルデスクトップ上で実行されることを意味します。自動化は当然ながらAUTに限定されず、通常のユーザーが行えるあらゆるデスクトップ操作を実行できます。

メリット

  • 別のコンピュータやOSを必要としない シングルマシン環境。

  • ローカルの Java SE インストールのみに依存し、他のソフトウェアをインストールする必要はありません。これにより、ターゲットシステムを変更できない非侵襲的なシナリオで Robot を使用することができます。完全に隔離されたシナリオでは、Robot および Java のファイルベースのディストリビューションを外部メディア(CD、DVD、USB ドライブ)にコピーし、そこから実行することで、SUT に何もインストールせずに済みます。

  • マルチディスプレイ 環境 のサポート(v4.1 以降)。

  • 高速かつ簡単な操作。

制限:

  • スクリプト記録機能は、MS Windows 2000以降(バージョン3.5以降)でサポートされています。バージョン4.1ではMac OS XおよびLinuxのサポートが提供されました。

  • ローカルデスクトップ接続に依存するテストスクリプトは、telnetやrshなどの端末経由でリモート起動できません。そのようなシナリオでは代わりにVNCサーバー接続を使用してください。

2.設定

ローカルデスクトップの自動化は、2 種類の接続タイプでサポートされています。

  1. ローカルデスクトップ接続は、ローカルにインストールされた Java SE に依存します。その他の依存関係はありません。接続するには、ログインダイアログで接続を選択し、接続をクリックするだけです。

  2. ローカルデスクトップは、ローカルで実行中のVNCサーバーを介しても自動化できます:

  • サポート対象のVNCサーバーをインストールするか、システム組み込みのVNCアクセスを有効にしてください(Ubuntu, Mac OS X)

  • ログインダイアログVNC サーバー 接続タイプを選択し、localhost に接続します。サーバーが標準の 5900 ポート以外のポートを使用するように設定されている場合は、localhost:<port>(例: localhost:5901)を使用してください。

Javaに依存するローカルデスクトップ接続が推奨されます。これは一般的にVNCサーバーよりも信頼性が高く、非英語文字の入力が可能です(キーボードサポート参照)。ローカルデスクトップ接続は画面ポーリングの観点でも通常高速です。VNCサーバーはビデオドライバに直接接続される場合(例:UltraVNCのミラードライバーまたはTightVNCのDFMirageドライバ)、より優れた画面パフォーマンスを提供することがあります。

ローカルデスクトップ接続とVNCサーバー接続の互換性は明示的に保証されません。ローカルまたはリモートのVNC接続向けに設計されたテストスクリプトは、ローカルデスクトップで正しく動作する場合もあれば、そうでない場合もあります。以下の要因が影響します:

OS およびデスクトップパラメータ(画面解像度、色深度)に関して環境が一致している必要があります。デスクトップパラメータが異なる場合、テンプレートイメージの比較が失敗する可能性があります。その場合は、イメージを再作成するか、画像コレクションを使用して新しい代替イメージを追加する必要があります。

  • ローカルデスクトップ接続では、異なるキーボードキーのセットがサポートされます。現在のシステムキーボードレイアウトで利用可能なキーのみをシミュレートできます。例えば、 コンピューターがイギリス(GB)キーボードレイアウトを使用している場合、ドル記号キー('$')は存在しません。Pressコマンドでこのキーを押すようロボットに指示しても、物理的なキーが存在しないため直接押せません。このような場合、ロボットはキーボードで押す代わりにシステムクリップボードから文字を貼り付けます。この方法は、文字がテキストの一部として入力される場合には問題なく動作します。しかし、AUT(アプリケーション対象)が 「$キーを押して続行」といった特定のキー押下イベントを監視する場合、正常に動作しません。 

  • もう一つの違いは、VNC接続が一般的にASCII 7ビット文字セットのみをサポートするのに対し、ローカルデスクトップ接続ではシステムクリップボードがサポートするあらゆる国別(UTF-8)文字を転送できる点です。たとえば、ロシア語やギリシャ語のテキストを入力することができます。これにより、Robot を ローカライゼーション (l10n) または 国際化 (i18n) テストに Robot を活用できます。


MS Windows上のローカルデスクトップ

v7.2.11以降、スケーリングされたMS Windowsデスクトップの自動化がサポートされています。Robotはスケーリング解除されたアプリケーションとして動作するため、フォントが非常に小さく読みづらい場合があります。ログインダイアログ左上の その他... メニューと、左上の


ホームスクリーン・メニューでメニューで、カスタムの表示フォントサイズを設定できます。

古いバージョンのRobotでは、表示スケーリングが有効な場合、ローカルデスクトップ接続の確立を拒否します。古いバージョンのRobotを使用する必要がある場合は、表示スケーリングを無効にしてください:

  1. Windowsの設定 ウィンドウを開き、システム→ディスプレイ 画面

  2. 「テキスト、アプリ、その他の項目のサイズを変更する」 の値を 100% に設定します。複数のディスプレイを使用している場合は、各ディスプレイごとに個別に設定してください。

  3. フォントやアプリを大きくする必要がある場合は、代わりに 解像度 の値を下げてください。


ローカルデスクトップスクリプトの記録を有効にする(Mac OS X)

Mac OS X でスクリプトの記録を有効にするには、Robot プロセスにアクセシビリティおよび画面録画の許可を与える必要があります。

  1. システム環境設定を開き、セキュリティとプライバシー

  2. 左側の列で アクセシビリティ を選択し、「TPlanRobot」アプリの横にあるチェックボックスを確認してください。クロスプラットフォームリリースを使用している場合、アプリのタイトルは 「Java」 となっている場合があります。

  3. 左側の列で 画面 録画 を選択し、アクセスも許可します。

  4. 右側の列のロックを解除するには、ロック アイコンをクリックし、チェックボックスを選択します。変更を適用するには、ロック をもう一度クリックしてください。

  5. 変更を適用するには、ロボットを再起動してください。

トラブルシューティング

  • ウィンドウにTPlanRobot またはJava アプリが表示されない場合は、まずそれらを起動し、Mac OSにRobotがアクセスを必要とすることを認識させてください。

  • Robotがアクセシビリティへのアクセスを要求し続ける場合がありますが、実際には既に有効になっているように見えることがあります。これは、別のアプリバージョンに対してアクセスが許可されたRobotのアップデート後に発生する可能性があります。通常、アクセス権を解除(チェックボックスをオフにする)し、再度許可すると解決します。改善しない場合は、ターミナルからアクセシビリティ画面録画の権限をリセットしてください:

    tccutil reset Accessibility com.tplan.robot
    tccutil reset ScreenCapture com.tplan.robot

Linux上のローカルデスクトップ

ローカルデスクトップは X11 デスクトップのみをサポートしています。新しい Wayland ベースのデスクトップは、Java がまだサポートしていないため、現時点ではサポートされていません。Oracle 側では、将来の Java リリースでこれを有効にする取り組みが行われています。

  • バージョン 7.0.1 までの Robot は Wayland をチェックしません。接続は作成できますが、それを使って作成されたスクリーンショットやコンポーネント画像はすべて黒くなります。

  • Robot バージョン 7.0.2 以降では、Wayland デスクトップへの接続を拒否します。Oracleがサポートを提供次第、これを有効化します。

最近のLinuxリリースではWaylandがデフォルトであるため、ローカルデスクトップ接続を有効化するにはX11に切り替える必要があります:

3.接続

テストスクリプトからローカルデスクトップに接続するには、Connectコマンド(TPRスクリプト)またはconnect()メソッド (Java テストスクリプト) を使用します。引数のURLは、"java://localhost"(ローカルデスクトップ接続タイプ)または "rfb://localhost"(VNCサーバー)のいずれかの形式でなければなりません。

たとえば、以下のコマンド/メソッド呼び出しは、ローカルデスクトップ接続を使用してローカルデスクトップに接続します:

TPRテストスクリプト: Connect java://localhost
Javaテストスクリプト: connect("java://localhost");

標準ポート5900で動作するVNCサーバーを使用してローカルデスクトップに接続するには:

TPRテストスクリプト: Connect rfb://localhost
Javaテストスクリプト: connect("rfb://localhost");

この URL は、c/-connectCLI オプションと組み合わせて、ロボットの起動時に接続を確立するためにも使用できます。接続が成功すると、ロボットはデスクトップビューアではなくワークフローチャートを表示して起動し、アプリケーションのタイトルには接続先 (java://localhost または rfb://localhost:5900) が表示されます。

重要:ローカルデスクトップ 接続の使用中は、OS のキーボードレイアウトを変更しないでください。接続が確立されたときにレイアウトがマッピングされ、その後変更すると、テストスクリプトが無効なキーを押す原因となる場合があります。キーボードの再マッピングを行うには、切断してから再接続してください。これは、一連のDisconnectそしてConnectコマンド(TPRフォーマット)またはdisconnect() そしてconnect()メソッド(Java 形式)。

4.ディスプレイの処理

単一ディスプレイ環境では、ローカルデスクトップの自動化プロセスはリモート環境とは異なります。Robotがローカル画面を操作する必要がある場合、まずGUIを非表示にする必要があります。テストスクリプト開発段階では、ユーザーが画像比較の実行、スクリーンショットの取得、画面位置や矩形の定義、新しいテンプレート画像の作成、コンポーネント・キャプチャーの実行を選択した場合にも適用されます。同様に、スクリプトの実行が開始されると GUI は非表示になり、スクリプトが終了するまで復元されません。スクリプト実行を一時停止しGUIを復元するには、マウスを動かす。この動作は、環境設定ダイアログのローカルマシンパネルで変更可能。オプションでは、スクリプトの一時停止と UI 非表示の動作に関するマウスの感度を設定できます。

Robot v4.1.1 では、マルチディスプレイ環境 の完全なサポートが導入されました。特定の画面またはすべての画面を自動化することが可能です。ディスプレイが 2 つ以上ある場合、ログイン ウィンドウには、画面選択ツールと、以下のオプションを含むドロップダウンが表示されます。

画面は1番から番号が付けられ、通常1番がプライマリ画面となります。最も効率的な設定は、1つのディスプレイを自動化し、もう1つのディスプレイにRobot GUIを表示させることです。これにより、スクリプト実行時やグラフィカル操作時にGUIを非表示にする必要がなくなります。

テストスクリプトまたはCLIから特定の画面に接続するには、接続URLに画面番号を以下のように追加します。番号を省略するか0を指定すると、全画面が自動接続されます。

この形式はc/-connectCLI接続にも適しています。ツール>CLIウィザードウィンドウから直近の接続URLをコピーすることも可能です。別の方法として、デスクトップ->接続マネージャウィンドウで接続に名前を付け、その名前を URL の代わりに使用することもできます。

TPRテストスクリプト: TPR test scripts: Connect java://localhost?screen=1
Javaテストスクリプト: connect("java://localhost?screen=1"); 

重要:パフォーマンス上の理由から、画面設定はロボット起動時に一度だけ読み込まれます。正常な動作を確保するため、ロボット実行中に画面レイアウトを変更したり、ディスプレイの追加/削除を行わないでください。

Robot 4.3.1以降、接続されたディスプレイのプロパティは以下のように変数を通じてテストスクリプトに公開されます:

  • スクリーン数 (ディスプレイ) は _DISPLAY_COUNT で利用可能です。

  • 各ディスプレイの [x, y, width, height] 座標は、以下の4つの変数内に格納されています。 _DISPLAY_X_<n> 、 _DISPLAY_Y_<n>、 _DISPLAY_W_<n> および _DISPLAY_H_<n>  ここで、<n> はスクリーン番号です。番号は 1 から始まり、その順序はローカルシステムによって決定されます。接続が screenパラメータを使用して単一のディスプレイに制限されている場合、その番号は、システムによって割り当てられ、ログインダイアログの画面レイアウトプレビューに表示される通常の番号に関係なく、常に 1 になります。

  • CompareTo, Waitfor match/mismatch, ClickそしてDragは、コンポーネントやテキストが配置された画面番号を示す一連の新規変数を設定します。これらは COMPARETO_DISPLAY_NO (最上位の一致表示番号に1を付与)および _COMPARETO_DISPLAY_NO<i>(<i>は一致位置の通常番号)で構成されます。これにより、表示される内容に応じて動作を切り替えることが可能になります。

  • 例:

// すべての画面でコンポーネントを検索する
Compareto "mount.png" method= "search2" 

// 見つからなければ終了
if ({_EXIT_CODE} > 0) { 
    Exit "1" 


// コンポーネントが表示されているディスプレイをテストする
if ({_DISPLAY_NO} == 1) { 
// 最初のディスプレイ上のコンポーネント → 何かをする
else { 
// 別の画面上のコンポーネント→別のことをする
}

より一般的な説明については、以下の暗黙的変数の表も参照してください。Varコマンド仕様の暗黙変数一覧表も参照してください。

Virtual 上で動作する Linux ゲストシステム のローカルデスクトップ自動化、Box 上で動作する Linux ゲストシステム のローカルデスクトップ自動化では、画面が正しく表示されない場合があります。典型的な症状は、Robot が不正確な、あるいは真っ黒なスクリーンショットやテンプレート画像を生成することです。Virtual Box のゲストシステムの Display 設定で 3D アクセラレーションを無効にして、この問題を修正してください。

5.キーボード操作

接続が確立されると、キーボードマッピングの進行状況を示すウィンドウがポップアップ表示されます。正しく動作させるため、表示中はデスクトップを操作しないでください。

バージョン 4.1 では、保存済みキーボードマップ が導入されました(ローカル VNC 接続には適用されません)。キーボードがマッピングされると、ファイルに保存されます。キーボードレイアウトに変更がない限り、以降の接続ではこの設定が再利用されます。この方式は高速であり、短いテストスクリプトを連続実行するテストスイートにおけるアプリケーションフォーカス問題を回避します。

キーボードマップはデフォルトでユーザーホームフォルダに保存されます。マップを手動で管理する必要がある場合は、tprlkm_ プレフィックスと .keymap 拡張子を持つファイルを探してください。入力言語とキーボードレイアウトごとに1つのファイルが存在します。例えば、ドイツ語キーボードレイアウトは <home>/tprlkm_de_DE.keymap として保存されます。Robot は、インストールディレクトリ(robot.jar ファイルを含むフォルダ)に配置されたキーボードマップファイルも受け入れます。これらのマップは上記のファイル名規則に従う必要があります。ユーザーホームフォルダに配置されたものよりも優先されます。この機能により、カスタム Robot ベースのソリューションを作成できます。

保存済みマップの使用は、ユーザー設定ファイル内の localDesktop.useStoredKeymaps 設定で制御されます。この設定は、この設定はログインウィンドウまたは環境設定ウィンドウのローカルデスクトップのパネルウィンドウに表示されます。プログラムでこのオプションを変更する必要がある場合は環境設定ドキュメンテーションを参照してください。

6.ローカルアプリケーションの起動

バージョン3.5.2ではExecコマンドnowaitおよびkill パラメータを追加し、ローカルデスクトップ接続を介したローカルアプリケーションの自動化を簡素化しました。基本的なパターンは、スクリプトがローカルアプリケーションを起動し、テストを行い、スクリプト終了時に閉じるというものです。例:

/ / myapp.exe を起動し、終了を待たない
Exec "myapp.exe" nowait="true"

...
// アプリケーションをテストする
...

//  アプリケーションを終了する(「1」は「Exec nowait=true」で起動されたプロセスの通常の番号)
Exec kill="1"

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.