Estoy usando Selenium RC para automatizar algunas operaciones del navegador, pero quiero que el navegador sea invisible. es posible? ¿Cómo? ¿Qué pasa con Selenium Grid? ¿Puedo ocultar también la ventana de Selenium RC?
python
selenium
selenium-rc
Yatendra Goel
fuente
fuente
Respuestas:
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 pueda 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 envolver 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 solía permitirnos Windows 2000.
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 PhantomJS, así como un 'Chrome sin cabeza' que puede usar.
Por supuesto, también existe la opción de utilizar un servicio como SauceLabs, donde puede hacer que sus pruebas se ejecuten en la nube. Una vez que se hayan completado las pruebas, puede ver un video de ellas ejecutándose.
fuente
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/xvfbwrapperEl código de Python para ejecutar sin cabeza se vería así:
Instale dependencias en Debian / Ubuntu:
fuente
Pude ocultar fácilmente la ventana del navegador.
Simplemente instale PhantomJS . Luego, cambia esta línea:
a:
No será necesario cambiar el resto de su código y no se abrirá ningún navegador. Para fines de depuración, utilícelo
driver.save_screenshot('screen.png')
en diferentes pasos de su código.fuente
driver = webdriver.PhantomJS(r"C:\\phantomjs\phantomjs.exe")
+1 para Selenium RC como servicio de Windows.
Para que las pruebas se ejecuten completamente ocultas, creo que no tiene muchas soluciones si está en Windows.
Lo que haría sería dedicar una computadora en su LAN para estar en línea todo el tiempo y tener un servidor RC de selenio en funcionamiento. Entonces usa la IP de esa computadora en lugar de localhost para ejecutar sus pruebas. Por ejemplo:
(considerando que esa es la ip de la computadora que ejecuta el servidor).
Con esa configuración, ejecutas tus pruebas en tu computadora, los navegadores y la ventana del servidor RC están en otra computadora y vuelves a la tuya una vez hecho.
fuente
En Linux, puede ejecutar su navegador de prueba en una pantalla virtual. Necesitará el
xvfb
paquete para crear un servidor X virtual. En distribuciones basadas en Debian, simplemente ejecuteHay una buena herramienta
ephemeral-x.sh
que configurará convenientemente cualquier comando para que se ejecute en la pantalla virtual. Descárgalo y hazlo ejecutable:Luego, simplemente puede usarlo para iniciar el servidor Selenium:
Todas las ventanas del navegador creadas por Selenium ahora usarán la pantalla virtual y serán invisibles para usted.
fuente
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 estarán visibles en su propia cuenta.
fuente
Así es como ejecuto mis pruebas con maven en un escritorio Linux (Ubuntu). Me harté de no poder trabajar con el controlador web de Firefox siempre enfocado.
Instalé xvfb
Eso es
fuente
En muchos casos, PhantomJS no se adaptará completamente a sus necesidades, me gustaría ampliar la opción de cromo sin cabeza mencionada en la respuesta de Dave Hunt.
Chrome 57 acaba de lanzar esta función. Puede usarlo pasando la bandera --headless a través de ChromeDriver, para obtener más información, consulte la discusión en esta pregunta
fuente
Existe un proyecto relacionado con PhantomJS llamado GhostDriver , que está destinado a ejecutar instancias de PhantomJS en un Selenium Grid utilizando el protocolo JSON de cable webdriver. Eso es probablemente lo que estás buscando, aunque esta pregunta ya tiene 4 años.
fuente
En MacOSX, no he podido ocultar la ventana del navegador, pero al menos descubrí cómo moverlo a una pantalla diferente para que no interrumpa tanto mi flujo de trabajo. Mientras Firefox está ejecutando pruebas, simplemente haga control y haga clic en su icono en el dock, seleccione Opciones y Asignar a la pantalla 2.
fuente
Por cierto, esta es una característica que necesita cualquier desarrollador que ejecute e2e y que, lógicamente, generará navegadores. En un entorno de desarrollo es molesto lidiar con la ventana que sigue apareciendo y con la que puede interactuar accidentalmente haciendo que la prueba falle.
fuente
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 mucho poder de cómputo para otras cosas / procesos. Utilizo esto cuando pruebo bots de automatización web que buscan zapatos en múltiples sitios usando elementos pesados de CPU, cuanto más energía ahorre y cuanto más simple sea su programa, más fácil será ejecutar múltiples procesos a la vez con mucha mayor velocidad y fiabilidad.
fuente