¿Es posible ocultar el navegador en Selenium RC?

Estoy utilizando Selenium RC para automatizar algunas operaciones del navegador, pero quiero que el navegador sea invisible. es posible? ¿Cómo? ¿Qué hay de Selenium Grid? ¿Puedo ocultar la ventana de Selenium RC tambié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 pueda conectarse a través de VNC o la 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/

  • Puedes envolver Selenium RC en un servicio de Windows. http://support.microsoft.com/kb/137890 . Excepto que las restricciones de permisos en las versiones posteriores de Windows probablemente evitarán que Selenium acceda al escritorio como Windows 2000 usó para permitirnos hacerlo.

  • Otra opción sería usar algo como WebDriver HTMLUnitDriver, que no lanza un navegador “real”. http://code.google.com/p/webdriver/ . También hay una opción PhantomJS así como un ‘Chrome sin cabeza’ que puedes usar.

  • Por supuesto, también existe la opción de usar un servicio como SauceLabs, donde puede hacer que sus pruebas se ejecuten en la nube. Una vez completadas las pruebas, puedes ver un video de ellas en ejecución.

En Linux, puede ejecutar WebDriver en una pantalla (virtual) sin cabeza para ocultar el navegador. Esto se puede hacer con Xvfb (X framebuffer virtual).

Puedes controlar Xvfb directamente desde el código Python usando xvfbwrapper : https://github.com/cgoldberg/xvfbwrapper

El código de Python para correr sin cabeza 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.

Sólo tiene que instalar PhantomJS . Luego, cambia esta línea:

 driver = webdriver.Firefox() 

a:

 driver = webdriver.PhantomJS() 

No será necesario cambiar el rest 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.

+1 para Selenium RC como servicio de windows.

Para que las pruebas se ejecuten completamente ocultas, creo que no tienes muchas soluciones si estás en Windows.

Lo que haría para dedicar una computadora en su LAN para estar en línea todo el tiempo y tener un servidor de Selenium RC en funcionamiento. Así que usa la IP de esa computadora en lugar del localhost para ejecutar sus pruebas. Por ejemplo:

 browser = selenium("10.15.12.34",4444,"*firefox","http://saucelabs.com") 

(considerando que esa es la ip de la computadora que ejecuta el servidor).

Con esa configuración, ejecuta las pruebas en su computadora, los navegadores y la ventana del servidor RC están en otra computadora y luego vuelven a la suya.

En Linux, puede ejecutar su navegador de prueba en una pantalla virtual. Necesitará el paquete xvfb para crear un servidor X virtual. En las distribuciones basadas en Debian, simplemente ejecute

 sudo apt-get install xvfb 

Hay una buena herramienta ephemeral-x.shephemeral-x.sh que configurará convenientemente cualquier comando para ejecutarse en la pantalla virtual. Descárgalo y hazlo ejecutable:

 wget https://raw.github.com/jordansissel/xdotool/master/t/ephemeral-x.sh chmod +x ephemeral-x.sh 

Luego, simplemente puede usarlo para iniciar el servidor Selenium:

 ./ephemeral-x.sh java -jar selenium-standalone.jar 

Todas las ventanas del navegador creadas por Selenium ahora usarán la pantalla virtual y serán invisibles para usted.

Si está en Windows, una opción es ejecutar las pruebas con una cuenta de usuario diferente . Esto significa que el navegador y el servidor java no serán visibles para su propia cuenta.

Así es como ejecuto mis pruebas con Maven en un escritorio Linux (Ubuntu). Me harté de no poder trabajar con Firefox Webdriver siempre enfocándome.

Instalé xvfb

xvfb-run -a mvn clean install

Eso es

En muchos casos, PhantomJS no se ajustará completamente a sus necesidades, me gustaría desarrollar la opción de cromo sin cabeza mencionada en la respuesta de Dave Hunt.

Chrome 57 acaba de lanzar esta característica. Puede usarlo pasando la bandera –headless a través de ChromeDriver, para más información vea la discusión en esta pregunta

Existe un proyecto relacionado con PhantomJS llamado GhostDriver , que está destinado a ejecutar instancias de PhantomJS en una cuadrícula de Selenium utilizando el protocolo JSON de cable de webdriver. Eso es probablemente lo que estás buscando, aunque esta pregunta tiene 4 años ahora.

En MacOSX, no he podido ocultar la ventana del navegador, pero al menos me di cuenta de cómo moverla a una pantalla diferente para que no interrumpa tanto mi flujo de trabajo. Mientras Firefox está ejecutando pruebas, solo tiene que presionar la tecla Control y hacer clic en su ícono en el dock, seleccionar Opciones y Asignar a la pantalla 2.

 curl -k https://gist.githubusercontent.com/terrancesnyder/995250/raw/cdd1f52353bb614a5a016c2e8e77a2afb718f3c3/ephemeral-x.sh -o ~/ephemeral-x.sh chmod +x ~/ephemeral-x.sh ~/ephemeral-x.sh TestsStarterCommand 

Por cierto, esta es una característica que necesita cualquier desarrollador que ejecute e2e que lógicamente generará navegadores. En un entorno de desarrollo es molesto tratar con la ventana que sigue apareciendo y con la que accidentalmente puede interactuar haciendo que la prueba falle.

Usar Chrome sin cabeza sería su mejor opción, o podría publicar directamente en el sitio para interactuar con él, lo que ahorraría una gran cantidad de poder de cómputo para otras cosas / procesos. Uso esto cuando pruebo los robots de automatización web que buscan zapatos en varios sitios usando elementos pesados ​​de cpu, cuanto más energía ahorre y más simple sea su progtwig, más fácil será ejecutar múltiples procesos a la vez con una mayor velocidad de muhc. confiabilidad.