web-dev-qa-db-ja.com

Sikuliをヘッドレスモードで動作させる方法

Sikuliを実行しているヘッドレステストサーバーがある場合(ubuntuとwindowsの両方の構成が必要です)、物理モニターなしで、できればできるだけ多くの画面解像度でサーバーを動作させる方法。

16
Amr Lotfy

Sikuliをヘッドレスモードで実行しました(物理モニターは接続されていません)。

Ubuntu:Xvfbを確認します。

Windows:仮想ボックスゲスト追加ディスプレイドライバーからマシンに(ヘッドレスになるように)ディスプレイドライバーをインストールし、TightVNCを使用して別のマシンからリモートで解像度を設定します。

Windows 7の詳細な手順

と仮定する:

  1. マシンA:ヘッドレスマシン、Windows 7、vncサーバー準備完了(例 TightVNC サーバーがインストールされ、接続を待機中).
  2. マシンB:マシンAの仮想ディスプレイドライバーをリモートでセットアップするために使用されます。

手順:

  1. ここ からマシンAに仮想ボックスゲスト追加ISOファイルをダウンロードします(最新バージョンについては、最新バージョンを確認してください ここ とVBoxGuestAdditions_x.y.z.isoをダウンロードしてください) enter image description here
  2. ISOファイル(おそらくwinrarを使用)をディレクトリに抽出します(フォルダDと呼びましょう) enter image description here
  3. コマンドプロンプトを使用してcd to Dフォルダー
  4. ドライバーの抽出

    -32ビットドライバーを「C:\ Drivers」に抽出するには、次の手順を実行します。

    • VBoxWindowsAdditions-x86/extract/D = C:\ Drivers

    -64ビットドライバーの場合:

    • VBoxWindowsAdditions-AMD64/extract/D = C:\ Drivers

    drivers extracted

  5. Goto Device Manager my computer/manage

  6. ハードウェアを追加するenter image description here

  7. List item

  8. List item

  9. List item

  10. List item

  11. List item

  12. List item

  13. List item

  14. List item

  15. List item

  16. 再起動してVNCビューアに接続すると、画面の解像度を変更できるようになります enter image description here

launchpad に関するその他の貴重な情報。

27
Amr Lotfy

SikuliXをWindows 2016クライアントシステムでGCEの真のヘッドレスモードで動作させました。ダクトテープやその他のRube Goldbergの仕掛けが機能するのに必要ですが、それは可能です。

問題は、GCE(およびおそらくAWSおよび他のクラウド環境のWindowsクライアント)の場合、仮想ビデオアダプターとディスプレイがないため、クライアントへのオープンRDP接続がない限り、画面がないことです。 、SikuliX/OpenCVは1024x768の黒いデスクトップを取得して失敗します。

したがって、問題は、実際の画面がどこにもない状態でRDP接続を作成する方法です。これはXvfb(X Windows仮想フレームバッファー)を使用して行いました。ただし、これには2番目のVMが必要です。 XvfbはLinux上で動作します。パズルのもう1つのピースはxfreerdp 2.0です。 2.xバージョンは、最新バージョンのWindowsとの互換性のために必要です。 1.xは一部のLinuxディストリビューションに含まれています。 2.xは、使用しているLinuxの種類によっては、ソースからビルドする必要がある場合があります。私はCentOSを使用していますが、自分でビルドする必要がありました。

ヘッドレスRDPセッションを確立するコマンドは、準備が整ったら、次のようになります。

/usr/bin/Xvfb :0 -screen 0 1920x1080x24 &
export DISPLAY=:0.0
/usr/local/bin/xfreerdp /size:1920x1080 /u:[WindowsUser] /p:"[WindowsPassword]" /v:[WindowsTarget]

私たちの環境では、Jenkinsによって開始されたビルドジョブの一部としてこれを自動化しました。これをJenkinsスレーブの下で機能させるには、サービスではなくユーザープロセスとしてJenkinsスレーブを実行することも必要でした...これは、自動管理ログインを有効にし、スレーブ起動スクリプトを実行として設定することで実行できます( logon)コマンド。

2
Paul Chambre

Ec2 Windowsマシンで自動化を検討している人にとって、これは私にとってうまくいきました: http://www.allianceglobalservices.com/blog/executing-automation-suite-on-disconnectedlocked-machines

要約すると、私はRDCを使用して接続し、次のコードをリモートデスクトップのバッチファイルに入れてダブルクリックすると、sikulixがリモートで動作し始めました(同時にRDCから追い出されました)。 tsconが処理を引き継ぐとき、ec2 Windowsマシンはデフォルトで1024x768になり、小さすぎる可能性があるため、実行前にTightVncを使用して解像度を1280x1024に上げることができます。

tscon.exe 0 /dest:console
tscon.exe 1 /dest:console
tscon.exe 2 /dest:console
tscon.exe 3 /dest:console
START /DC:\Sikulix /WAIT /B C:\Sikulix\runsikulix.cmd -d 3 -r C:\test.sikuli -f C:\Sikulix\log.txt -d C:\Sikulix\userlog.txt
1
Adam Lane