Es posible ocultar el navegador en Selenium RC?


Estoy usando Selenium RC para automatizar algunas operaciones del navegador, pero quiero que el navegador sea invisible. Es esto posible? ¿Cómo? ¿Qué hay de la rejilla de Selenio? ¿Puedo ocultar también la ventana de Selenium RC?

Author: Stéphane Bruckert, 2009-09-13

11 answers

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 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 'headless' 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 que nos permitió 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' headless Chrome ' que se puede utilizar.

  • Por supuesto, también existe la opción de usar un servicio como SauceLabs, donde puede obtener que sus pruebas se ejecuten en la nube. Después de que tus pruebas hayan terminado, puedes ver un video de ellas ejecutándose.

 84
Author: Dave Hunt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-06-19 20:25:01

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

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

El código Python para ejecutar 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
 55
Author: Corey Goldberg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-03-07 00:02:04

Me las arreglé fácilmente para ocultar la ventana del navegador.

Solo instala PhantomJS. Luego, cambie esta línea:

driver = webdriver.Firefox()

A:

driver = webdriver.PhantomJS()

El resto de su código no tendrá que ser cambiado y no se abrirá ningún navegador. Para fines de depuración, use driver.save_screenshot('screen.png') en diferentes pasos de su código.

 19
Author: Stéphane Bruckert,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-05-27 20:11:00

+1 para Selenium RC como servicio de Windows.

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

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

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

(considerando que esa es la ip del equipo que ejecuta el servidor).

Teniendo esa configuración, se ejecuta sus pruebas en su ordenador, los navegadores y la ventana del servidor RC están en otro ordenador y el volver a la suya una vez hecho.

 13
Author: Santi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-09-14 04:28:56

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

sudo apt-get install xvfb

Hay una buena herramienta ephemeral-x.sh eso configurará convenientemente cualquier comando para ejecutarse en la pantalla virtual. Descárguelo y hágalo ejecutable:

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

Entonces 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 pantalla virtual y será invisible para usted.

 12
Author: pixelistik,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-05-23 20:03:20

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

 4
Author: Igor Brejc,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-11-17 18:16:16

Así es como corro mis pruebas con maven en un escritorio linux (Ubuntu). Me harté de no poder trabajar con el firefox webdriver siempre tomando el foco.

He instalado xvfb

Xvfb-run-a mvn clean install

Eso es todo

 3
Author: Paul Whelan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-06-29 12:00:18

En muchos casos PhantomJS no se adapte completamente a sus necesidades, Me gustaría elaborar sobre la opción sin cabeza chrome mencionado en la respuesta de Dave Hunt.

Chrome 57 acaba de lanzar esta función. Puede usarlo pasando la bandera head headless a través de ChromeDriver, para más información consulte la discusión en esta pregunta

 1
Author: in016hoe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 11:47:20

Hay 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 webdriver wire. Eso es probablemente lo que estás buscando, aunque esta pregunta ya tiene 4 años.

 0
Author: djangofan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-04-03 19:17:02

En MacOSX, no he podido ocultar la ventana del navegador, pero al menos descubrí cómo moverla a una pantalla diferente para que no interrumpa tanto mi flujo de trabajo. Mientras Firefox está ejecutando pruebas, simplemente haga clic en su icono en el dock, seleccione Opciones y Asigne a Display 2.

 0
Author: chetstone,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-07-09 19:43:35
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 necesaria para cualquier desarrollador que ejecute e2e que lógicamente generará navegadores. En un entorno de desarrollo es molesto lidiar con la ventana que sigue apareciendo y que puede interactuar accidentalmente haciendo que la prueba falle.

 0
Author: Nestor Urquiza,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-08-04 13:32:28