Tengo un conjunto de pruebas de selenio que ejecuta muchas pruebas y en cada nueva prueba abre una ventana del navegador encima de cualquier otra ventana que haya abierto. Muy discordante mientras trabajaba en un entorno local. ¿Alguna forma de decirle al selenio o al sistema operativo (MAC) que abra las ventanas en segundo plano?
selenium
selenium-webdriver
webdriver
selenium-grid
kevzettler
fuente
fuente
driver = webdriver.Firefox()
su código, siga mi respuesta aquí: stackoverflow.com/a/23898148/1515819Respuestas:
Hay algunas formas, pero no es un simple "establecer un valor de configuración". A menos que invierta en un navegador sin cabeza, que no se ajusta a los requisitos de todos, es un poco hack:
¿Cómo ocultar la ventana de Firefox (Selenium WebDriver)?
y
¿Es posible ocultar el navegador en Selenium RC?
Puede 'supuestamente' pasar algunos parámetros a Chrome, específicamente:
--no-startup-window
Tenga en cuenta que para algunos navegadores, especialmente IE, perjudicará sus pruebas para que no se ejecute en foco.
También puedes hackear un poco con AutoIT, para ocultar la ventana una vez que se abre.
fuente
Si está utilizando el controlador web Selenium con Python, puede usar PyVirtualDisplay, un contenedor de Python para Xvfb y Xephyr.
PyVirtualDisplay necesita Xvfb como dependencia. En Ubuntu, primero instale Xvfb:
luego instale PyVirtualDisplay desde Pypi:
Ejemplo de secuencia de comandos Selenium en Python en modo sin cabeza con PyVirtualDisplay:
EDITAR La respuesta inicial se publicó en 2014 y ahora estamos en la cúspide de 2018. Como todo lo demás, los navegadores también han avanzado. Chrome tiene ahora una versión completamente sin cabeza que elimina la necesidad de usar bibliotecas de terceros para ocultar la ventana de la interfaz de usuario. El código de muestra es el siguiente:
fuente
Chrome 57 tiene una opción para pasar el indicador --headhead, que hace que la ventana sea invisible.
Esta bandera es diferente de la ventana --no-startup-ya que la última no abre una ventana. Se usa para alojar aplicaciones en segundo plano, como dice esta página .
Código Java para pasar la bandera a Selenium webdriver (ChromeDriver):
fuente
Para ejecutar sin ningún navegador, puede ejecutarlo en modo sin cabeza .
Te muestro un ejemplo en Python que está funcionando para mí en este momento
También le agrego un poco más de información sobre esto en el sitio web oficial de Google https://developers.google.com/web/updates/2017/04/headless-chrome
fuente
Desde Chrome 57 tienes el argumento sin cabeza:
El modo sin cabeza de Chrome funciona un 30,97% mejor que la versión de interfaz de usuario. El otro controlador sin cabeza PhantomJS ofrece un 34,92% mejor que el modo sin cabeza de Chrome.
PhantomJSDriver
El modo sin cabeza de Mozilla Firefox funciona 3.68% mejor que la versión de la interfaz de usuario. Esto es una decepción ya que el modo sin cabeza de Chrome logra un tiempo> 30% mejor que el de la interfaz de usuario. El otro controlador sin cabeza PhantomJS ofrece un 34,92% mejor que el modo sin cabeza de Chrome. Sorprendentemente para mí, el navegador Edge los supera a todos.
Esto está disponible desde Firefox 57+
El modo sin cabeza de Mozilla Firefox funciona 3.68% mejor que la versión de la interfaz de usuario. Esto es una decepción ya que el modo sin cabeza de Chrome logra un tiempo> 30% mejor que el de la interfaz de usuario. El otro controlador sin cabeza PhantomJS ofrece un 34,92% mejor que el modo sin cabeza de Chrome. Sorprendentemente para mí, el navegador Edge los supera a todos.
fuente
Sugiero usar Phantom Js para obtener más información que necesita para visitar el sitio web oficial de Phantom
después de descargar PhantomJs.exe, debe importar a su proyecto, como puede ver en la imagen a continuación. Phantomjs está dentro de lo común >> Biblioteca >> phantomjs.exe
Ahora todo lo que tiene que hacer dentro de su código Selenium es cambiar la línea
A algo como
Eso es, funcionó para mí. y definitivamente él trabajará para ti, Cheers
fuente
En Windows puedes usar win32gui:
Ejemplo:
Sin embargo, hay un problema con esta solución: el uso del método send_keys hace que aparezca la ventana. Puede lidiar con él usando javascript que no muestra la ventana:
fuente
Usé este código para Firefox en Windows y obtuve respuesta: (referencia aquí )
Pero no lo pruebo para otros navegadores.
fuente
Puede estar en opciones. Aquí está el código Java idéntico.
fuente
Esta es una solución simple de NodeJS que funciona en la nueva versión 4.x (quizás también 3.x) de Selenium.
Cromo:
Firefox
Todo se ejecuta en segundo plano. Exactamente lo que queremos.
fuente
Si está utilizando el controlador de Chrome, puede utilizar este código muy simple: (funcionó para mí)
fuente
En * nix, también puede ejecutar un servidor X sin cabeza como Xvfb y apuntarle la variable DISPLAY:
¿Servidor X falso para probar?
fuente
Aquí hay una solución .net que funcionó para mí:
Descargue PhantomJs aquí http://phantomjs.org/download.html
Copie el archivo .exe de la carpeta bin en la descarga y péguelo en la carpeta bin debug / release de su proyecto de Visual Studio.
Agregue esto usando
En su código, abra el controlador así:
fuente
Si está usando Ubuntu (Gnome), una solución simple es instalar la extensión de Gnome auto-move-window: https://extensions.gnome.org/extension/16/auto-move-windows/
Luego configure el navegador (por ejemplo, Chrome) en otro espacio de trabajo (por ejemplo, Espacio de trabajo 2). El navegador se ejecutará silenciosamente en otro espacio de trabajo y ya no te molestará. Todavía puede usar Chrome en su espacio de trabajo sin interrupción.
fuente
hola tuve el mismo problema con mi chromedriver usando python y options.add_argument ("sin cabeza") no funcionó para mí, pero luego me di cuenta de cómo solucionarlo, así que lo incluí en el código a continuación
Espero que funcione para ti.
fuente
Una forma de lograr esto es ejecutando el navegador en modo sin cabeza. Otra ventaja de esto es que las pruebas se ejecutan más rápido.
Encuentre el código a continuación para configurar el modo sin cabeza en el navegador Chrome.
fuente