71 votes

Sélénium : WebDriverException:Chrome failed to start : crashed as google-chrome is no longer running so ChromeDriver is assuming that Chrome has crashed

Récemment, j'ai changé d'ordinateur et depuis, je n'arrive pas à lancer Chrome avec Selenium. J'ai également essayé Firefox mais l'instance du navigateur ne se lance 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 le pilote de chrome installé.

EDIT : Après avoir essayé la solution de @b0sss, j'obtiens 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)

4voto

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 recommencez, l'erreur devrait disparaître.

4voto

Rogelio Points 997

Dans mon cas, l'erreur était avec l'utilisateur www-data mais pas avec l'utilisateur normal sur le développement. L'erreur était un problème pour initialiser un affichage x pour cet utilisateur. Donc, le problème a été résolu en exécutant mon test selenium sans ouvrir une fenêtre de navigateur, sans tête :

opts.set_headless(True)

4voto

Panupong Kongarn Points 1167

Pour RobotFramework

Je l'ai résolu ! en utilisant --no-sandbox

${chrome_options}=  Evaluate  sys.modules['selenium.webdriver'].ChromeOptions()  sys, selenium.webdriver
Call Method    ${chrome_options}    add_argument    test-type
Call Method    ${chrome_options}    add_argument    --disable-extensions
Call Method    ${chrome_options}    add_argument    --headless
Call Method    ${chrome_options}    add_argument    --disable-gpu
Call Method    ${chrome_options}    add_argument    --no-sandbox
Create Webdriver    Chrome    chrome_options=${chrome_options}

Au lieu de

Open Browser    about:blank    headlesschrome
Open Browser    about:blank    chrome

2voto

Carter Points 21

Une solution simple que personne d'autre n'a dit mais qui a fonctionné pour moi était de ne pas courir sans sudo ou pas comme Root.

1voto

The Stevie T Points 21

Cette erreur s'est produite de manière aléatoire lors de mes tests au cours des six derniers mois (elle se produit toujours avec Chrome 76 et Chromedriver 76) et uniquement sous Linux. En moyenne, un test sur quelques centaines échoue, puis le test suivant se déroule correctement.

Ne parvenant pas à résoudre le problème, j'ai encapsulé dans Python la fonction driver = webdriver.Chrome() dans un bloc try..except dans setUp() dans ma classe de scénario de test dont tous mes tests sont dérivés. S'il rencontre l'exception Webdriver, il attend dix secondes et réessaie.

Cela a résolu le problème que j'avais ; pas de manière élégante mais cela fonctionne.

from selenium import webdriver
from selenium.common.exceptions import WebDriverException

try:
    self.driver = webdriver.Chrome(chrome_options=chrome_options, desired_capabilities=capabilities)
except WebDriverException as e:
    print("\nChrome crashed on launch:")
    print(e)
    print("Trying again in 10 seconds..")
    sleep(10)
    self.driver = webdriver.Chrome(chrome_options=chrome_options, desired_capabilities=capabilities)
    print("Success!\n")
except Exception as e:
    raise Exception(e)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X