Saltar al contenido

¿Puede Selenium WebDriver abrir ventanas del navegador de forma silenciosa en segundo plano?

Si te encuentras con algo que te causa duda puedes dejarlo en los comentarios y trataremos de ayudarte tan rápido como podamos.

Solución:

Si usa 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:

sudo apt-get install xvfb

Luego instale PyVirtualDisplay desde PyPI:

pip install pyvirtualdisplay

Ejemplo de secuencia de comandos de Selenium en Python en modo sin cabeza con PyVirtualDisplay:

    #!/usr/bin/env python

    from pyvirtualdisplay import Display
    from selenium import webdriver

    display = Display(visible=0, size=(800, 600))
    display.start()

    # Now Firefox will run in a virtual display.
    # You will not see the browser.
    browser = webdriver.Firefox()
    browser.get('http://www.google.com')
    print browser.title
    browser.quit()

    display.stop()

EDITAR

La respuesta inicial se publicó en 2014 y ahora estamos en la cúspide de 2018. Como todo, los navegadores también han avanzado. Chrome tiene ahora una versión completamente autónoma que elimina la necesidad de usar bibliotecas de terceros para ocultar la ventana de la interfaz de usuario. El código de ejemplo es el siguiente:

    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options

    CHROME_PATH = '/usr/bin/google-chrome'
    CHROMEDRIVER_PATH = '/usr/bin/chromedriver'
    WINDOW_SIZE = "1920,1080"

    chrome_options = Options()
    chrome_options.add_argument("--headless")
    chrome_options.add_argument("--window-size=%s" % WINDOW_SIZE)
    chrome_options.binary_location = CHROME_PATH

    driver = webdriver.Chrome(executable_path=CHROMEDRIVER_PATH,
                              chrome_options=chrome_options
                             )
    driver.get("https://www.google.com")
    driver.get_screenshot_as_file("capture.png")
    driver.close()

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 adapta a los requisitos de todos, es un pequeño truco:

¿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 Internet Explorer, dañará sus pruebas si no se ejecuta en foco.

También puede modificar un poco con AutoIt, para ocultar la ventana una vez abierta.

Chrome 57 tiene una opción para pasar el indicador –headless, que hace que la ventana sea invisible.

Esta bandera es diferente de –no-startup-window ya que la última no abre una ventana. Se utiliza para alojar aplicaciones en segundo plano, como dice esta página.

Código Java para pasar la bandera a Selenium webdriver (ChromeDriver):

ChromeOptions options = new ChromeOptions();
options.addArguments("--headless");
ChromeDriver chromeDriver = new ChromeDriver(options);

Aquí tienes las reseñas y calificaciones

Nos puedes añadir valor a nuestra información participando con tu experiencia en las explicaciones.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *