//barrabarra

JAVIER ROMERO
Programación web y escritorio
 

Ejecutar Selenium WebDriver con Firefox en un servidor remoto sin interfaz gráfica

abril 12, 2013 at 10:05 am | Blog, Sistemas | 1 comment

 

Si queremos aprovechar nuestro hosting en una máquina remota para ejecutar pruebas mediante Selenium WebDriver nos encontraremos con el inconveniente de que estas máquinas por lo general carecen de un entorno gráfico, necesario para que se lance el navegador y se puedan realizar los tests. Esto puede resolverse con la ayuda de Xvfb, un servidor gráfico “de pega” que nos va a permitir lanzar nuestro navegador sin necesidad de ejecutar todo el entorno X.

Para ello, instalaremos los paquetes necesarios, en Ubuntu esto será con:

apt-get install xvfb firefox firefox-locale-es

Cuando instalemos los paquetes y sus correspondientes dependencias podemos ejecutar:

startx -- `which Xvfb` :1 -screen 0 1024x768x24 &

lo que nos lanzará un servidor gráfico utilizando Xvfb y lo dejara ejecutándose de fondo. Para continuar sólo tenemos que lanzar una instancia de Firefox y comprobar que efectivamente se ejecuta. El único detalle a tener en cuenta es que hay que indicarle qué display utilizar, lo haremos de la siguiente forma:

DISPLAY=:1 firefox &

Si quieres asegurarte de que se está ejecutando y tienes instalado el paquete imagemagick puedes hacer una captura de pantalla :D, lo haríamos con:

DISPLAY=:1 import -window root capturafirefox.png

Para evitar tener que ejecutar estas líneas cada vez que el servidor arranque y se detenga, y por comodidad para gestionarlo, podemos crear un script de Upstart, primero con un archivo de configuración en /etc/init/xvfb.conf con el contenido:


description "XVFB fake x server instance"
start on runlevel [2345]
stop on runlevel [06]
respawn
respawn limit 10 5
exec startx -- `which Xvfb` :1 -screen 0 1024x768x24

con lo que podremos lanzar el servicio con service xvfb start, aunque para que se lance automáticamente al inicio del sistema haremos:

ln -s /lib/init/upstart-job /etc/init.d/xvfb

Una última cosa, igual que al lanzar nuestra instancia de Firefox había que indicarle el display a utilizar, cuando se vaya a lanzar algún comando que tenga que hacer uso del servidor gráfico habrá que indicarlo, podemos poner la variable en el entorno mediante nuestro archivo de configuración del intérprete de órdenes, o simplemente poner delante de cada tarea de cron, script y similar la línea DISPLAY=:1 antes de la orden.



<< Volver al Blog Comentar la entrada

 

Un comentario en “Ejecutar Selenium WebDriver con Firefox en un servidor remoto sin interfaz gráfica”

  1. admin dice:

    Más fácil, desde el script python y permitiendo cucamonas como hacer capturas de pantalla http://python.dzone.com/articles/taking-browser-screenshots-no

Deja tu comentario

Categorias:

Archivo: