Back

Explore Courses Blog Tutorials Interview Questions
0 votes
2 views
in DevOps and Agile by (19.7k points)

I am running selenium through Xvfb on display number: 99 like this:

/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

However, display with a number other than 0 is not visible by default. How do I make it visible to actually see what selenium is doing in the browser?

1 Answer

0 votes
by (62.9k points)

All you need is to install x11vnc via:

sudo apt-get install x11vnc xvfb fluxbox

Optionally install Fluxbox to have a simple window manager.

Then to do the setup the access to Xvfb for remote control can be done using X11 over SSH or VNC over SSH, e.g.

export DISPLAY=:1

Xvfb $DISPLAY -screen 0 1024x768x16 &

fluxbox &

x11vnc -display $DISPLAY -bg -forever -nopw -quiet -listen localhost -xkb

Here is script friendly version:

export DISPLAY=$ # 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))"

 

If your Xvfb listens on localhost only, you can setup tunneling to localhost, so a vncviewer can then be used to connect to the localhost to get the remote control over the server. E.g.

ssh -N -T -L 5900:localhost:5900 user@remotehost &

vncviewer -encodings 'copyrect tight zrle hextile' localhost:5900

Or to listen on all addresses with passwords, use:

x11vnc -display :0.0 -usepw

To set up a password, run x11vnc -storepasswd.

See: remote control over SSH at Xvfb Wikipedia page

Or you can use the following one-liner:

$ x11vnc -create -env FD_PROG=/usr/bin/fluxbox \

-env X11VNC_FINDDISPLAY_ALWAYS_FAILS=1 \

-env X11VNC_CREATE_GEOM=$ \

-gone 'killall Xvfb' \

-bg -nopw

-create makes it start Xvfb

X11VNC_FINDDISPLAY_ALWAYS_FAILS=1 makes it go to the created Xvfb session (Display: 1 rather than :0 which will be in desktop)

FD_PROG=/usr/bin/fluxbox makes it fire up Fluxbox (Ubuntu's Fluxbox, should have background Ubuntu logo)

X11VNC_CREATE_GEOM==${1:-1024x768x16} sets screen to 16bit colour 1024x768

-gone cleans up once it exits, otherwise, Xvfb is left behind. (As  killing xvfb additionally kills fluxbox)

Browse Categories

...