python - Selenium: WebDriverException: Chrome no se pudo iniciar: se bloqueó porque google-chrome ya no se está ejecutando, por lo que ChromeDriver está asumiendo que Chrome se ha bloqueado
selenium-webdriver selenium-chromedriver (7)
Soy consciente de que hay varias respuestas con respecto a esta pregunta, pero nada me ha funcionado hasta ahora, por lo tanto, estoy publicando una nueva pregunta.
Recientemente cambié de computadora y desde entonces no puedo lanzar Chrome con selenio. También he probado Firefox pero el navegador no enciende.
from selenium import webdriver
d = webdriver.Chrome(''/home/PycharmProjects/chromedriver'')
d.get(''https://www.google.nl/'')
Obtuve el siguiente error:
selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: crashed
(unknown error: DevToolsActivePort file doesn''t exist)
(The process started from chrome location /opt/google/chrome/google-chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.)
(Driver info: chromedriver=2.43.600233, platform=Linux 4.15.0-38-generic x86_64)
Tengo la última versión de Chrome y Chromedriver instalado
EDITAR: Después de intentar la solución @ b0sss, aparece el siguiente error.
selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: crashed
(chrome not reachable)
(The process started from chrome location /opt/google/chrome/google-chrome is no longer running, so chromedriver is assuming that Chrome has crashed.)
(Driver info: chromedriver=2.43.600233 (523efee95e3d68b8719b3a1c83051aa63aa6b10d),platform=Linux 4.15.0-38-generic x86_64)
Encontré el problema exacto ejecutándose en el contenedor de la ventana acoplable (en un entorno de compilación). Después de ssh en el contenedor, intenté ejecutar la prueba manualmente y todavía encontré
(unknown error: DevToolsActivePort file doesn''t exist)
(The process started from chrome location /usr/bin/google-chrome-stable is
no longer running, so ChromeDriver is assuming that Chrome has crashed.)
Cuando intenté ejecutar chrome localmente
/usr/bin/google-chrome-stable
, aparece un mensaje de error
Running as root without --no-sandbox is not supported
Revisé mis ChromeOptions y faltaba
--no-sandbox
, por lo que no podía generar Chrome.
capabilities = Selenium::WebDriver::Remote::Capabilities.chrome(
chromeOptions: { args: %w(headless --no-sandbox disable-gpu window-size=1920,1080) }
)
Espero que esto ayude a alguien. esto me funcionó en Ubuntu 18.10
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument("--headless")
chrome_options.add_argument(''--no-sandbox'')
driver = webdriver.Chrome(''/usr/lib/chromium-browser/chromedriver'', options=chrome_options)
driver.get(''http://www.google.com'')
print(''test'')
driver.close()
Este mensaje de error ...
selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: crashed
(unknown error: DevToolsActivePort file doesn''t exist)
(The process started from chrome location /opt/google/chrome/google-chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.)
... implica que ChromeDriver no pudo iniciar / generar un nuevo WebBrowser, es decir, una sesión de Chrome Browser .
Su principal problema es que el navegador Chrome no está instalado en la ubicación predeterminada dentro de su sistema.
El servidor, es decir, ChromeDriver, espera que tenga Chrome instalado en la ubicación predeterminada para cada sistema, como se muestra en la siguiente imagen:
1
Para los sistemas Linux, ChromeDriver espera que
/usr/bin/google-chrome
sea un enlace simbólico al binario real de Chrome.
Solución
En caso de que esté utilizando un ejecutable de Chrome en una ubicación no estándar, debe anular la ubicación binaria de Chrome. como sigue:
-
Solución Python :
from selenium import webdriver from selenium.webdriver.chrome.options import Options options = Options() options.binary_location = "C://path//to//chrome.exe" driver = webdriver.Chrome(chrome_options = options, executable_path=r''C:/path/to/chromedriver.exe'') driver.get(''http://google.com/'') print("Chrome Browser Invoked") driver.quit()
-
Solución Java :
Intente descargar AQUÍ y use esta última versión del controlador de Chrome.
https://sites.google.com/a/chromium.org/chromedriver/downloads
EDITAR:
Prueba esto:
chrome_options = Options()
chrome_options.add_argument(''--headless'')
chrome_options.add_argument(''--no-sandbox'')
chrome_options.add_argument(''--disable-dev-shm-usage'')
d = webdriver.Chrome(''/home/PycharmProjects/chromedriver'',chrome_options=chrome_options)
d.get(''https://www.google.nl/'')
Suponiendo que ya ha descargado ChromeDriver, este error también se produce cuando ya están abiertas varias pestañas de Chrome.
Si cierra todas las pestañas y ejecuta de nuevo, el error debería desaparecer.
Tuve un problema similar y descubrí que los argumentos de las opciones deben estar en un cierto orden . Solo soy consciente de los dos argumentos que se requerían para que esto funcionara en mi máquina Ubuntu 18. Este código de ejemplo funcionó en mi final:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
options.add_argument(''--no-sandbox'')
options.add_argument(''--disable-dev-shm-usage'')
d = webdriver.Chrome(executable_path=r''/home/PycharmProjects/chromedriver'', chrome_options=options)
d.get(''https://www.google.nl/'')
en mi caso, el error fue con el usuario www-data pero no con el usuario normal en desarrollo. El error fue un problema para inicializar una pantalla x para este usuario. Entonces, el problema se resolvió ejecutando mi prueba de selenio sin abrir una ventana del navegador, sin cabeza:
opts.set_headless(True)