Je suis en cours d'exécution de sélénium par Xvfb sur le nombre d'affichage: 99 comme ceci:
/ 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
Cependant, l'affichage avec un numéro autre que: 0 n'est pas visible par défaut. Comment puis-je le rendre visible pour voir réellement ce que Selenium fait dans le navigateur?
C'est virtuel. De la page de manuel Xvfb(1)
:
Xvfb est un serveur X pouvant fonctionner sur des machines sans matériel d'affichage ni périphérique d'entrée physique. Il émule un framebuffer muet utilisant la mémoire virtuelle.
Également dans la page de manuel:
Xvfb -pixdepths 3 27 -fbdir /var/tmp
Le serveur écoutera les connexions en tant que numéro de serveur 0, aura la configuration d'écran par défaut (un écran, 1280x1024x8), supportera également les profondeurs de pixmap de 3 et 27, et utilisera Les fichiers mappés en mémoire dans/var/tmp pour le framebuffer.
xwud -in /var/tmp/Xvfb_screen0
Affiche l'écran 0 du serveur démarré par l'exemple précédent.
Vous pouvez obtenir une vue en direct en exécutant un serveur VNC sur l'affichage Xvfb, comme ceci:
x11vnc -display :99 -localhost &
vncviewer :0
Tout ce dont vous avez besoin est d'installer x11vnc
via:
Sudo apt-get install x11vnc xvfb fluxbox
Installez éventuellement Fluxbox pour avoir un gestionnaire de fenêtres simple.
Ensuite, pour configurer l’accès à Xvfb pour le contrôle à distance, vous pouvez utiliser X11 sur SSH ou VNC sur SSH, par exemple.
export DISPLAY=:1
Xvfb $DISPLAY -screen 0 1024x768x16 &
fluxbox &
x11vnc -display $DISPLAY -bg -forever -nopw -quiet -listen localhost -xkb
Voici la version conviviale du script:
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))"
Si votre Xvfb écoute uniquement sur localhost, vous pouvez configurer le tunneling vers localhost afin qu'un vncviewer puisse ensuite se connecter à localhost pour obtenir le contrôle à distance du serveur. Par exemple.
ssh -N -T -L 5900:localhost:5900 user@remotehost &
vncviewer -encodings 'copyrect tight zrle hextile' localhost:5900
Ou pour écouter toutes les adresses avec un mot de passe, utilisez:
x11vnc -display :0.0 -usepw
Pour configurer le mot de passe, exécutez: x11vnc -storepasswd
.
Voir: Contrôle à distance via SSH sur la page Wikipedia Xvfb
Ou vous pouvez utiliser le one-liner suivant:
$ 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
le fait démarrer XvfbX11VNC_FINDDISPLAY_ALWAYS_FAILS=1
permet d'accéder à la session Xvfb créée (affichez :1
plutôt que :0
qui correspond au bureau normal)FD_PROG=/usr/bin/fluxbox
le fait démarrer Fluxbox (celui d'Ubuntu, devrait avoir le logo Ubuntu en arrière-plan)X11VNC_CREATE_GEOM=${1:-1024x768x16}
définit l'écran en couleur 16 bits 1024x768-gone
nettoie à sa sortie, sinon Xvfb est laissé derrière (tuer xvfb
tue aussi fluxbox
)Voir: Interface graphique Ubuntu Fluxbox avec x11vnc et Xvfb
Une solution simple consiste également à prendre en permanence des captures d'écran du programme comme ceci:
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
Note: nécessite d'installer imagemagick et feh