example chrome java python firefox selenium webdriver

java - chrome - selenium python click



¿Cómo ocultar la ventana de Firefox(Selenium WebDriver)? (11)

Cuando ejecuto varias pruebas simultáneamente, no quiero mantener visible la ventana del navegador Firefox. Puedo minimizarlo usando selenium.minimizeWindow() pero no quiero hacerlo.

¿Hay alguna forma de ocultar la ventana de Firefox? Estoy usando FireFox WebDriver.


Java

Tuve un problema similar con ChromeDriver (necesitaba minimizar la ventana del navegador mientras se ejecutaban las pruebas). No pude encontrar una mejor manera de hacerlo, así que terminé usando la combinación de teclado Alt + Espacio, N para hacerlo. Esto debería funcionar solo en Windows, el ejemplo usa la clase Java AWT Robot para reproducir los atajos de teclado:

//Alt + Space to open the window menu Robot robot = new Robot(); robot.keyPress(KeyEvent.VK_ALT); robot.keyPress(KeyEvent.VK_SPACE); robot.keyRelease(KeyEvent.VK_SPACE); robot.keyRelease(KeyEvent.VK_ALT); Thread.sleep(200); // miNimize robot.keyPress(KeyEvent.VK_N); robot.keyRelease(KeyEvent.VK_N);


Pitón

La forma más fácil de ocultar el navegador es instalar PhantomJS . Luego, cambia esta línea:

driver = webdriver.Firefox()

a:

driver = webdriver.PhantomJS()

No será necesario cambiar el resto del código 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 o simplemente cambie al controlador de red de Firefox nuevamente.

En Windows, deberá especificar la ruta a phantomjs.exe:

driver = webdriver.PhantomJS(''C:/phantomjs-1.9.7-windows/phantomjs.exe'')

Java

Eche un vistazo a Ghost Driver: Cómo ejecutar GhostDriver con Selenium usando Java

C#

Cómo ocultar FirefoxDriver (usando Selenium) o ponerlo en C # Form


Descubrí que la manera más fácil era usar PhantomJS, según la sugerencia de Stéphane. Descargué el binario y puse phantomjs en mi PATH, en mi caso (Mac OS) en / usr / bin /. Me gusta conservar la opción de ver lo que está pasando, así que lo envolví así (en Python):

def new_driver(): if ''VISIBLE_WEBDRIVER'' in os.environ: return webdriver.Firefox() else: return webdriver.PhantomJS()

Referencias
http://blog.likewise.org/2013/04/webdriver-testing-with-python-and-ghostdriver/
http://www.realpython.com/blog/python/headless-selenium-testing-with-python-and-phantomjs/


El navegador predeterminado PhantomJS es IE, aunque muchas funciones del navegador no funcionan. si quieres abrir Firefox, puedes usar la nueva función en Firefox 56+: https://developer.mozilla.org/en-US/Firefox/Headless_mode

con esta característica deberías obtener un controlador como este:

System.setProperty("webdriver.gecko.driver", firefoxDriverExePath); FirefoxOptions options = new FirefoxOptions(); options.addArguments("--headless"); FirefoxDriver driver = new FirefoxDriver(options);

Las nuevas versiones de Chrome también tienen una opción headless .


En Java, puede usar HtmlUnitDriver para iniciar una sesión del navegador sin cabeza que no abrirá realmente el navegador.

Agregue la siguiente dependencia a su pom.xml (o descargue y haga referencia a lo siguiente):

<dependency> <groupId>net.sourceforge.htmlunit</groupId> <artifactId>htmlunit</artifactId> <version>2.15</version> </dependency>

... y pruébelo como lo haría con una instancia del controlador WebDriver:

driver = new HtmlUnitDriver(); driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS); driver.get("http://www.google.com"); // etc.. driver.quit();

Otra pregunta similar en SO: Evite abrir el navegador en el servidor remoto durante la llamada de selenio


Finalmente encontré la solución para aquellos que están usando Windows Machine para ejecutar las pruebas usando cualquier método. Bueno, la implementación no está en Java pero puedes hacerlo muy fácilmente.

Use la herramienta AutoIt . Tiene toda la capacidad para manejar ventanas. Es una herramienta gratuita.

  1. Instalar AutoIt: http://www.autoitscript.com/site/autoit/downloads/

  2. Abra el Editor y escriba el código a continuación para Ocultar cualquier ventana.

    AutoItSetOption("WinTitleMatchMode", 2) WinSetState("Title Of Your Window", "", @SW_HIDE)

  3. Para mostrarlo, puede usar la siguiente línea de código.

    AutoItSetOption("WinTitleMatchMode", 2) WinSetState("Title Of Your Window", "", @SW_SHOW)

    WinTitleMatchMode tiene diferentes opciones que se pueden usar para hacer coincidir el título de Windows.

    1 = Match the title from the start (default)` 2 = Match any substring in the title 3 = Exact title match 4 = Advanced mode, see Window Titles & Text (Advanced)

Entonces, lo que estoy haciendo es: He creado un exe de un pequeño programa y un parámetro de paso como un argumento de línea de comando como el siguiente.

Runtime.getRuntime().exec("C:/Diiinnovation/HideNSeek.exe 0 /"" + "Mozilla Firefox" + "/"");

en HideNSeek.exe - Tengo el siguiente código de AutoIt:

AutoItSetOption("WinTitleMatchMode", 1) if $CmdLine[0] > 0 Then if $CmdLine[1] == 0 Then WinSetState($CmdLine[2], "", @SW_HIDE) ElseIf $CmdLine[1] == 1 Then WinSetState($CmdLine[2], "", @SW_SHOW) Else EndIf EndIf

$CmdLine[] es una matriz que tendrá todos los parámetros de línea de comandos.

$CmdLine[0] = number of Parameter $CmdLine[1] = 1st Parameter after Exe Name . .

Si hay espacio en el título de la ventana, entonces tiene que usar comillas dobles para pasarlo como un parámetro de línea de comando como el de arriba.

Debajo de la línea de código se ejecutará AutoIt.exe y si paso ''0'' en el primer parámetro, se ocultará la ventana y, si paso ''1'' , se mostrarán las ventanas que coincidan con el título.

Runtime.getRuntime().exec("C:/Diiinnovation/HideNSeek.exe 0 /"" + "Mozilla Firefox" + "/"");

Espero que esto ayude. ¡Gracias!


Fire Fox tiene un modo sin cabeza, solo necesitas configurarlo en opciones binarias. Aquí está mi código de trabajo:

binary = FirefoxBinary("C:/Program Files/Mozilla Firefox/firefox.exe") options = webdriver.FirefoxOptions() # set headless mode on options.set_headless(True) driver = webdriver.Firefox(firefox_binary=binary,options=options)


Si está utilizando KDE Desktop, puede hacer que Firefox Windows inicialmente abierto se minimice. Eso me hizo el día con respecto a este problema. Solo haz lo siguiente:

  1. Abre Firefox
  2. Haga clic en el icono de Firefox en la esquina superior izquierda de la barra de menú -> Avanzado -> Configuración de aplicación especial ...
  3. Ve a la pestaña "Tamaño y posición".
  4. Haga clic en "Minimizado" y elija "Aplicar Inicialmente" (SÍ).

Esta configuración se aplicará a las nuevas ventanas de Firefox a partir de ahora y ya no tendrás que preocuparte por las ventanas emergentes cuando realices pruebas con Webdriver.


Si está utilizando Selenium RC o Remote WebDriver, puede ejecutar la instancia del navegador en una máquina remota o virtual. Esto significa que no debe preocuparse por ocultar las ventanas del navegador, ya que no se ejecutarán en su máquina local.


Solo agrega que el siguiente código funciona bien. Y no es necesario cambiar ningún otro código

import os os.environ[''MOZ_HEADLESS''] = ''1'' driver = webdriver.Firefox()


Usé xvfb para resolver el problema de esta manera.

Primero, instale Xvfb:

# apt-get install xvfb

en Debian / Ubuntu; o

# yum install xorg-x11-Xvfb

en Fedora / RedHat. Luego, elija un número de pantalla que probablemente no chocará (incluso si agrega una pantalla real más adelante) - algo tan alto como 99 debería hacer. Ejecute Xvfb en esta pantalla, con el control de acceso desactivado:

# Xvfb :99 -ac

Ahora debe asegurarse de que su pantalla esté configurada en 99 antes de ejecutar el servidor Selenium (que a su vez inicia el navegador). La forma más sencilla de hacerlo es exportar DISPLAY =: 99 al entorno de Selenium. Primero, asegúrate de que las cosas funcionen desde la línea de comandos de esta forma:

$ export DISPLAY=:99 $ firefox

o solo

$ DISPLAY=:99 firefox

A continuación hay un enlace que me ayudó
http://www.alittlemadness.com/2008/03/05/running-selenium-headless/