rdp (JA)
RDP接続
リモートデスクトッププロトコル(RDP)は、マイクロソフトが開発した独自プロトコルです。RDPサーバーはWindowsオペレーティングシステムに組み込まれています。この技術はMS Windowsではターミナルサービスとしても知られ、サーバーはターミナルサーバーとも呼ばれます。UnixおよびOS X向けのRDPサーバー実装も存在します。RDPプロトコル経由のテストはT-Plan Robot Enterprise v4.3で導入されました:
Robotを実行するホストは、MS Windows Vista以降である必要があります。今後のリリースではOS Xのサポートも提供されます。
サーバー(被試験システム、SUT)は、RDPサーバーを実行する任意のOSである可能性がある
最新のRDPライブラリを含むRobot 6.1の使用が推奨されます。
WindowsのRDP
MS WindowsはRDP接続を以下のようにサポートしています:
Windows Professional および Ultimate エディションは、標準で RDP をサポートしています。サーバーはデフォルトで無効になっており、有効化する必要があります。ネットワークレベル認証セキュリティ(NLA)はRobot 4.4.4以降でサポートされています。古いバージョンまたは接続失敗の場合は無効にする必要があります。
Windows Home エディションは公式に RDP をサポートしていません。機能自体は含まれていますが非表示になっています。RDPWrapなどのサードパーティ製ツールを使用して有効化できる場合があります。
Windows Server システムでは、メディアコーデックがインストールされていないと接続が切断されます。これを修正するには、デスクトップエクスペリエンス 機能をインストールする必要があります。
Windows Server 2012 R2 の手順:
スタート -> 管理ツール -> サーバー マネージャー に移動します。
ダッシュボード画面でロールと機能の追加をクリックします。これによりロールと機能の追加ウィザードが開始されます。
機能 画面の ユーザー インターフェイスとインフラストラクチャ カテゴリにある デスクトップ エクスペリエンス 機能を選択します。
インストールをクリックしてください。完了後、サーバーを再起動してください。
他のシステムでのRDP
他のシステムでは、RDPサーバーをインストールして起動する必要があります。既知の実装例:
非Windows環境向けのRDP接続をサポートするサードパーティ製ソリューションが複数存在します。非Windows環境において、RobotがサポートするRDP機能はWindowsベースのシステムと異なる場合があります。
例えば、Oracle VirtualBoxは仮想マシン(VM)へのRDP接続をサポートしています。ロボットはこのようなVMに接続して自動化できますが、クリップボード転送やドライブリダイレクトのサポートは限定的です。また、VM上で動作する一部のシステムでは正しい画面サイズが設定されないため、ロボット側の接続パラメータを通じて正しい画面サイズを強制的に設定する必要がある場合があります。
RDPの機能
Robot 4.4.4では、ローカルシステムとリモートシステム間のクリップボード転送のサポートが導入されました。これはローカルとリモートのクリップボードの同期に基づいています。単一のRobotマシン上で複数のRDP接続を計画している場合、競合する2つのスクリプトによる並列クリップボード更新を回避するため、何らかのロックを実装する必要があります。
クリップボード同期はデフォルトで有効になっており、別途有効化する必要はありません。クリップボード経由のファイル転送はまだサポートされていません。
スクリプト内でクリップボードの内容を取得するには、_SERVER_CLIPBOARD_CONTENT変数を取得します:
// クリップの内容をテキストとしてCLIP変数に保存する
Var CLIP="{_SERVER_CLIPBOARD_CONTENT}"
クリップボードの内容を設定するには、_SERVER_CLIPBOARD_CONTENT 変数を設定します:
// クリップボードの内容を "Hello world "に設定する。
Var _SERVER_CLIPBOARD_CONTENT="Hello world!"
リモートデスクトップからオブジェクトをコピー/貼り付けするには、PressコマンドでCtrl+C/Ctrl+Vキーを押すか、他のシステム/アプリケーション手段(コンテキスト/編集メニューなど)を使用してください。すべてのクリップボードオブジェクトはスクリプト内でテキストとして扱われます。
Robot 4.4.4 は、接続パラメータの変更や追加機能の設定を可能にするFreeRDP CLIオプションの一部も受け付けます。例:
+auto-reconnect オプションを使用すると、断続的なネットワーク問題により接続が切断された場合に自動的に再接続されます。
ローカルディレクトリをリモートマシンにマッピング(リダイレクト)するには、/drive:<共有名>,<パス> オプションを使用します。これにより、ローカルシステムとリモートシステム間のファイル転送が可能になります。例えば、以下のオプションを指定すると、リモートシステムからローカルディレクトリ"C:\MyData"が"Z"ドライブとして認識されます:
/ドライブ:Z,C:\MyData
ドライブリダイレクトはリモートシステムのサポートに依存し、すべての環境で動作するとは限りません。最大限の権限を持つファイルパスを使用することを推奨します。
CLIオプションは以下のように定義できます:
RDPサーバー画面のユーザー設定(編集→環境設定ウィンドウ内)から設定します。これらのオプションは全ての接続に適用されます。
テストスクリプトは、RDP接続を確立する前に_RDP_OPTIONS変数に値を設定する場合があります。この変数の内容は、設定で指定されたオプションに追加されますが、競合するオプションを排除する処理は行われません。例えば、以下のコードはリダイレクトされたドライブをRDP接続に適用します:クリプトはRDP_OPTIONS変数の内容が、環境設定で指定されたオプションに追加される。変数の内容は、競合するものを排除する努力なしに、環境設定で指定されたオプションに追加されます。たとえば、以下のコードはRDP接続にリダイレクトされたドライブを適用します:
Var _RDP_OPTIONS="/drive:Z,C:\MyData"
Connect rdp://myserver
接続
テストスクリプトからRDPに接続するには、接続コマンド(TPRスクリプト)またはconnect()メソッド((Javaテストスクリプト)を使用します。引数URLは「rdp://<host_or_IP>」の形式である必要があります。例えば、以下のコマンド/メソッド呼び出しはローカルデスクトップ接続を使用してローカルデスクトップに接続します:
TPRテストスクリプト: Connect rdp://<address>?user=<user>&password=<passwd>
Javaテストスクリプト: connect("rdp://<address>?user=<user>&password=<passwd>");
URLはc/コネクトCLIオプションと組み合わせて使用することで、ロボット起動時に接続を確立することも可能です。
重要: RDPシステムでは米国英語キーボードレイアウトを使用する必要があります。他のレイアウトは現在サポートされておらず、「入力して押す」コマンドを使用するテストスクリプトでは誤った文字が入力されます。この制限は今後のRobotリリースで対応予定です。
トラブルシューティング
RDPウィンドウの最小化
リモートデスクトップ(RDP)を使用すると、別のマシンに接続して、そのリモートコンピューター上でRobotをネイティブに実行できます。ただし、リモートデスクトップウィンドウ(リモートコンピューターのデスクトップを表示するウィンドウ)を最小化すると、WindowsはリモートセッションをGUIなしモードに切り替えます。その結果、入力制御を受け付けなくなります。この場合、Robotは存在しないリモートシステムのGUIと対話できなくなり、自動化されたGUIテストは一時停止します。
この問題を回避するには、ローカルコンピューター(リモートデスクトップを起動するマシン)で、リモートセッションのGUIが最小化された際の動作に影響するレジストリ設定を変更してください。
ローカルコンピューターのレジストリ設定を次のように変更します:
ローカルコンピューター上で、開いているすべてのリモートデスクトップ セッションを閉じてください。
レジストリ エディタ(regedit.exe)を起動します。
現在のユーザーのみ、またはコンピューター上のすべてのユーザーのリモート デスクトップ設定を変更するかによって、次のいずれかのレジストリ キーに移動します:
HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client
HKEY_LOCAL_MACHINE\Software\Microsoft\Terminal Server ClientDWORD 値を作成し、その名前を RemoteDesktop_SuppressWhenMinimized と設定し、値を "2" に設定します:
レジストリ エディタを閉じます。
リモートデスクトップ接続ウィンドウを最小化しても、リモートコンピュータのGUIには影響せず、自動化されたテストはリモートマシン上で引き続き実行されるはずです。