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)