Rosa, parte de este equipo de trabajo, nos ha hecho el favor de escribir esta crónica porque controla a la perfección dicho tema.
Solución:
Hay algunas opciones:
-
Puede usar Selenium Grid para que el navegador se abra en una máquina completamente diferente (o máquina virtual) a la que luego puede conectarse a través de VNC o Conexión de escritorio remoto si desea ver el navegador. Además, otra opción: si ejecuta un proceso de primer plano de Jenkins en ese servidor remoto, puede ejecutar su proyecto de prueba en el escritorio.
-
Puede ejecutar Selenium ‘sin cabeza’ en Linux en XVFB. Nunca he intentado hacer esto y dudo que realmente valga la pena el esfuerzo. http://www.alittlemadness.com/2008/03/05/running-selenium-headless/
-
Puede empaquetar Selenium RC en un servicio de Windows. http://support.microsoft.com/kb/137890. Excepto que las restricciones de permisos en versiones posteriores de Windows probablemente evitarán que Selenium acceda al escritorio como Windows 2000 solía permitirnos hacerlo.
-
Otra opción sería usar algo como WebDriver HTMLUnitDriver, que no inicia un navegador ‘real’. http://code.google.com/p/webdriver/ . También hay una opción de PhantomJS, así como un ‘Chrome sin cabeza’ que podría usar.
-
Por supuesto, también existe la opción de utilizar un servicio como SauceLabs, donde puede ejecutar sus pruebas en la nube. Una vez que se hayan completado las pruebas, puede ver un video de ellas ejecutándose.
En Linux, puede ejecutar WebDriver en una pantalla sin cabeza (virtual) para ocultar el navegador. Esto se puede hacer con Xvfb (X virtual framebuffer).
Puede controlar Xvfb directamente desde el código Python usando xvfbwrapper
: https://github.com/cgoldberg/xvfbwrapper
El código de Python para ejecutar headless se vería así:
from selenium import webdriver
from xvfbwrapper import Xvfb
display = Xvfb()
display.start()
# now Firefox will run in a virtual display.
# you will not see the browser.
driver = webdriver.Firefox()
driver.get('http://www.google.com')
print(driver.title)
driver.quit()
display.stop()
Instalar dependencias en Debian/Ubuntu:
$ sudo apt-get install xvfb
$ pip install xvfbwrapper
Me las arreglé fácilmente para ocultar la ventana del navegador.
Simplemente instale PhantomJS. Luego, cambia esta línea:
driver = webdriver.Firefox()
a:
driver = webdriver.PhantomJS()
No será necesario cambiar el resto de su código y no se abrirá ningún navegador. Para propósitos de depuración, use driver.save_screenshot('screen.png')
en diferentes pasos de su código.
Tienes la posibilidad dar recomendación a esta noticia si te fue de ayuda.