web-dev-qa-db-ja.com

Docker内でヘッドレスで実行されているSeleniumテストをビデオ録画する方法は?

ヘッドレスFirefoxを使用してDocker内でpython-Seleniumテストを実行しています。

これらのテスト中に、スクリーンショット用のSeleniumメソッドを使用してスクリーンショットを作成できますが、テスト全体で仮想ディスプレイを「ビデオ」記録するために何かを使用できます(いくつかのテストメソッドを使用したいくつかのテストスクリプト、多くのWebドライバーが開始および停止)。

では、どうすれば完全なテストセッションをビデオ録画できますか?

補遺:必要なものを正確に説明しているWebページを見つけました: ここ 。残念ながら、録音しようとするとエラーが発生します。これが私がしているコマンドです:

xvfb-run --listen-tcp --server-num 44 --auth-file /tmp/xvfb.auth -s "-ac -screen 0 1920x1080x24" python seltest.py &
ffmpeg -f x11grab -video_size 1920x1080 -i 127.0.0.1:44 -codec:v libx264 -r 12 /tmp/behat_1.mp4

エラーは(2番目のコマンドの場合):

[x11grab @ 0x1d289c0] Cannot open display 127.0.0.1:44, error 1.
127.0.0.1:44: Input/output error
13
Alex

ffmpegを使用して仮想ディスプレイを記録する正しい手順は次のとおりです。

xvfb-run --listen-tcp --server-num 44 --auth-file /tmp/xvfb.auth -s "-ac -screen 0 1920x1080x24" python seltest.py &
export DISPLAY=:44
ffmpeg -f x11grab -video_size 1920x1080 -i :44 -codec:v libx264 -r 12 video.mp4
8
Alex

article が提供するように、試すべきことがいくつかあります。

Xhostの手順に従って、「ディスプレイを開けません」エラーを修正できます。

  1. クライアントがxhost +を使用して任意のホストから接続できるようにする次のコマンドを実行してアクセス制御を無効にします。これにより、クライアントが任意のホストから接続できるようになります。

    $ xhost + 
    access control disabled, clients can connect from any Host
    
  2. X11転送を有効にするsshの実行中に、オプション-Xを使用してX11転送を有効にします。

    $ ssh username@hostname -X 
    

    -Yオプションを使用して、信頼できるX11転送を有効にします。

    $ ssh username@hostname -Y
    
  3. そのホストでGUIアプリケーションを開く上記で説明したようにリモートホストへのssh接続を開いた後、問題なく開くことができる任意のGUIアプリケーションを開くことができます。

    それでも「ディスプレイを開けません」というエラーが表示される場合は、以下に示すようにDISPLAY変数を設定します。

    $ export DISPLAY='IP:0.0' 
    

    注:IPは、GUIアプリケーションを表示するローカルワークステーションのIPです。

編集:

hostname:n.m

ここで、hostnameはネットワークホスト名であり、必要に応じてドメイン名で修飾されます(またはIPアドレスを直接使用します)。 nは、そのホストの表示番号(通常は0)です。 mは、そのホストの画面番号(通常は0)です。

したがって、127.0.0.1:44127.0.0.1:n.mに置き換えてみてください。複数のディスプレイがある場合は、127.0.0.1:0.0127.0.0.1:0.1127.0.0.1:1.0 ..を渡して、どれが機能するかを調べてください。

また、表示サイズが本当に1920x1080かどうかも確認してください。

0
Andrei Suvorkov