Je sais qu'il existe plusieurs réponses à cette question, mais que rien n'a fonctionné pour moi jusqu'à présent, je poste une nouvelle question.
Récemment, j’ai changé d’ordinateur et depuis lors, je ne peux plus lancer Chrome avec Selenium. J'ai aussi essayé Firefox mais le navigateur ne fonctionne pas.
from Selenium import webdriver
d = webdriver.Chrome('/home/PycharmProjects/chromedriver')
d.get('https://www.google.nl/')
je reçois l'erreur suivante:
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)
j'ai la dernière version de chrome et chromedriver installés
EDIT: Après avoir essayé la solution @ b0sss, je reçois l’erreur suivante.
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)
Ce message d'erreur ...
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.)
... implique que le lecteur ChromeDriver n'a pas pu lancer/créer un nouveau WebBrowser i.e. Navigateur Chrome session.
Votre problème principal est que le navigateur Chrome n'est pas installé à l'emplacement par défaut de votre système.
ChromeDriver s'attend à ce que Chrome soit installé à l'emplacement default pour chaque système, comme indiqué dans l'image ci-dessous:
1Pour les systèmes Linux, ChromeDriver s'attend à ce que /usr/bin/google-chrome
soit un lien symbolique vers le binaire Chrome actuel.
Si vous utilisez un Chrome exécutable dans un emplacement non standard, vous devez outrepasser l'emplacement binaire de Chrome. comme suit:
Essayez de télécharger ICI et utilisez cette dernière version du pilote chrome.
https://sites.google.com/a/chromium.org/chromedriver/downloads
MODIFIER:
Essaye ça:
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/')
J'ai rencontré le problème exact qui s'exécutait sur un conteneur Docker (dans l'environnement de génération). Après ssh dans le conteneur, j'ai essayé de lancer le test manuellement et j'ai quand même rencontré
(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.)
Lorsque j'ai essayé d'exécuter chrome localement /usr/bin/google-chrome-stable
, un message d'erreur
Running as root without --no-sandbox is not supported
J'ai vérifié mes ChromeOptions et il manquait --no-sandbox
, c'est pourquoi il ne pouvait pas générer de chrome.
capabilities = Selenium::WebDriver::Remote::Capabilities.chrome(
chromeOptions: { args: %w(headless --no-sandbox disable-gpu window-size=1920,1080) }
)
En supposant que vous ayez déjà téléchargé chromeDriver, cette erreur se produit également lorsque plusieurs onglets de chrome sont déjà ouverts.
Si vous fermez tous les onglets et que vous exécutez à nouveau, l'erreur devrait disparaître.