Saltar al contenido

¿Cómo configurar ChromeDriver para iniciar el navegador Chrome en modo sin cabeza a través de Selenium?

Solución:

Debe tener un aspecto como este:

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

options = Options()
options.add_argument('--headless')
options.add_argument('--disable-gpu')  # Last I checked this was necessary.
driver = webdriver.Chrome(CHROMEDRIVER_PATH, chrome_options=options)

Esto funciona para mí usando Python 3.6, estoy seguro de que también funcionará para 2.7.

Actualización 2018-10-26: En estos días puedes hacer esto:

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

options = Options()
options.headless = True
driver = webdriver.Chrome(CHROMEDRIVER_PATH, chrome_options=options)

Responder actualización de 13-octubre-2018

Para iniciar un google-chrome-headless contexto de navegación utilizando ChromeDriver impulsado por Selenium ahora puede configurar el --headless propiedad a true a través de una instancia de Options() clase de la siguiente manera:

  • Bloque de código efectivo:

    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    
    options = Options()
    options.headless = True
    driver = webdriver.Chrome(options=options, executable_path=r'C:pathtochromedriver.exe')
    driver.get("http://google.com/")
    print ("Headless Chrome Initialized")
    driver.quit()
    

Responder actualización de 23-abril-2018

La invocación de google-chrome en modo sin cabeza mediante programación se ha vuelto mucho más fácil con la disponibilidad del método set_headless(headless=True) como sigue :

  • Documentación:

    set_headless(headless=True)
        Sets the headless argument
    
        Args:
            headless: boolean value indicating to set the headless option
    
  • Código de muestra :

    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    
    options = Options()
    options.set_headless(headless=True)
    driver = webdriver.Chrome(options=options, executable_path=r'C:pathtochromedriver.exe')
    driver.get("http://google.com/")
    print ("Headless Chrome Initialized")
    driver.quit()
    

Nota : --disable-gpu El argumento se implementa internamente.


Respuesta original de 30 de mar. De 2018

Mientras trabaja con Cliente Selenium 3.11.x, ChromeDriver v2.38 y Google Chrome v65.0.3325.181 en Sin cabeza modo hay que tener en cuenta los siguientes puntos:

  • Necesitas agregar el argumento --headless para invocar Chrome en modo sin cabeza.

  • Para Sistemas operativos Windows necesitas agregar el argumento --disable-gpu

  • Según Headless: hacer que la bandera –disable-gpu sea innecesaria --disable-gpu la bandera no es necesaria en Sistemas Linux y Mac OS.

  • Según SwiftShader falla una afirmación en Windows en modo sin cabeza --disable-gpu la bandera se volverá innecesaria en Sistemas Windows también.

  • Argumento start-maximized es necesario para un maximizado Viewport.

  • Aquí está el enlace a los detalles sobre Viewport.

  • Es posible que deba agregar el argumento --no-sandbox para evitar el modelo de seguridad del sistema operativo.

  • Bloque de código de Windows efectivo:

    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    
    options = Options()
    options.add_argument("--headless") # Runs Chrome in headless mode.
    options.add_argument('--no-sandbox') # Bypass OS security model
    options.add_argument('--disable-gpu')  # applicable to windows os only
    options.add_argument('start-maximized') # 
    options.add_argument('disable-infobars')
    options.add_argument("--disable-extensions")
    driver = webdriver.Chrome(chrome_options=options, executable_path=r'C:pathtochromedriver.exe')
    driver.get("http://google.com/")
    print ("Headless Chrome Initialized on Windows OS")
    
  • Bloque de código de Linux efectivo:

    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    
    options = Options()
    options.add_argument("--headless") # Runs Chrome in headless mode.
    options.add_argument('--no-sandbox') # # Bypass OS security model
    options.add_argument('start-maximized')
    options.add_argument('disable-infobars')
    options.add_argument("--disable-extensions")
    driver = webdriver.Chrome(chrome_options=options, executable_path="/path/to/chromedriver")
    driver.get("http://google.com/")
    print ("Headless Chrome Initialized on Linux OS")
    

Outro

¿Cómo hacer que Firefox sin cabeza mediante programación en Selenium con Python?


tl; Dr

Aquí está el enlace al Salvadera historia.

Actualización 20 de agosto de 2020 – ¡Ahora es simple!

from selenium.webdriver.support.ui import WebDriverWait

chrome_options = webdriver.ChromeOptions()
chrome_options.headless = True

self.driver = webdriver.Chrome(
            executable_path=DRIVER_PATH, chrome_options=chrome_options)
¡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 *