私は次のようにディスプレイ番号:99でXvfbを介してSeleniumを実行しています:
/ usr/bin/Xvfb:99 -ac -screen 0 1024x768x8&export DISPLAY = ":99" && Java -jar /usr/lib/Selenium/selenium-server-standalone-2.24。 1. jar -port 4444
ただし、:0以外の番号の表示は、デフォルトでは表示されません。 Seleniumがブラウザで何をしているかを実際に確認するには、どうすれば表示できますか?
それは仮想です。マニュアルページからXvfb(1)
:
Xvfbは、ディスプレイハードウェアや物理入力デバイスのないマシンで実行できるXサーバーです。仮想メモリを使用してダムフレームバッファをエミュレートします。
また、manページで:
Xvfb -pixdepths 3 27 -fbdir /var/tmp
サーバーは、サーバー番号0として接続をリッスンし、デフォルトの画面構成(1画面、1280x1024x8)を持ち、3および27のpixmap深さもサポートし、フレームバッファに/ var/tmpのメモリマップファイルを使用します。 。
xwud -in /var/tmp/Xvfb_screen0
前の例で起動したサーバーの画面0を表示します。
次のように、Xvfbディスプレイに対してVNCサーバーを実行すると、ライブビューを取得できます。
x11vnc -display :99 -localhost &
vncviewer :0
必要なのは、x11vnc
経由:
Sudo apt-get install x11vnc xvfb fluxbox
オプションで、Fluxboxをインストールして、シンプルなウィンドウマネージャーを使用します。
次に、リモート制御のためにXvfbへのアクセスをセットアップするには、X11 over SSHまたはVNC over SSHを使用できます。
export DISPLAY=:1
Xvfb $DISPLAY -screen 0 1024x768x16 &
fluxbox &
x11vnc -display $DISPLAY -bg -forever -nopw -quiet -listen localhost -xkb
スクリプトフレンドリーバージョンは次のとおりです。
export DISPLAY=${DISPLAY:-:0} # Select screen 0 by default.
xdpyinfo
if which x11vnc &>/dev/null; then
! pgrep -a x11vnc && x11vnc -bg -forever -nopw -quiet -display WAIT$DISPLAY &
fi
! pgrep -a Xvfb && Xvfb $DISPLAY -screen 0 1024x768x16 &
sleep 1
if which fluxbox &>/dev/null; then
! pgrep -a fluxbox && fluxbox 2>/dev/null &
fi
echo "IP: $(hostname -I) ($(hostname))"
注:以下で使用しています Dockerプロジェクト (check .funcs.cmds.inc.sh
)。
Xvfbがlocalhostのみでリッスンする場合、localhostへのトンネリングを設定できるため、vncviewerはlocalhostに接続してサーバーをリモート制御できます。例えば。
ssh -N -T -L 5900:localhost:5900 user@remotehost &
vncviewer -encodings 'copyrect tight zrle hextile' localhost:5900
または、パスワードを使用してすべてのアドレスをリッスンするには、次を使用します。
x11vnc -display :0.0 -usepw
パスワードを設定するには、次を実行します:x11vnc -storepasswd
。
参照: SSH経由のリモートコントロール Xvfbウィキペディアページ
または、次のワンライナーを使用できます。
$ x11vnc -create -env FD_PROG=/usr/bin/fluxbox \
-env X11VNC_FINDDISPLAY_ALWAYS_FAILS=1 \
-env X11VNC_CREATE_GEOM=${1:-1024x768x16} \
-gone 'killall Xvfb' \
-bg -nopw
-create
Xvfbを起動させますX11VNC_FINDDISPLAY_ALWAYS_FAILS=1
は、作成されたXvfbセッションに移動します(表示:1
のではなく :0
これは通常のデスクトップになります)FD_PROG=/usr/bin/fluxbox
は、Fluxboxを起動します(Ubuntuのもの、Ubuntuロゴの背景が必要です)X11VNC_CREATE_GEOM=${1:-1024x768x16}
画面を16ビットカラー1024x768に設定します-gone
終了時にクリーンアップします。そうしないと、Xvfbが残されます(xvfb
を削除するとfluxbox
も削除されます)以下も確認してください:
簡単な解決策は、次のようなプログラムのスクリーンショットを常に撮ることです。
while /bin/true; do
DISPLAY=:99 import -window root ~/Pictures/xvfb_screenshot.png
sleep 0.1
done &
PID=$!
feh --reload 0.1 ~/Pictures/xvfb_screenshot.png 2>/dev/null
kill $PID
注:imagemagickおよびfehをインストールする必要があります