web-dev-qa-db-fra.com

WebDriverException: Message: erreur inconnue: Chrome n'a pas pu démarrer: erreur de plantage avec ChromeDriver Chrome via Selenium Python sur Amazon Linux

Juste pour montrer que j'ai fait tout mon possible, j'ai déjà essayé les réponses suggérées ou au moins les ai relues et essayé de comprendre, pour les questions suivantes:

Selenium: WebDriverException: Chrome n'a pas pu démarrer: s'est écrasé car google-chrome ne fonctionne plus donc ChromeDriver suppose que Chrome s'est écrasé

Le processus démarré à partir de l'emplacement chrome C:\..\Chrome\Application\chrome.exe n'est plus en cours d'exécution, donc ChromeDriver suppose que Chrome s'est écrasé

Bibliothèque Selenium python via docker, l'erreur Chrome n'a pas pu démarrer: sortie anormale

Chrome plante lors de l'utilisation de Selenium (Aucune réponse publiée mais je l'ai toujours regardée)

Comment corriger l'erreur "usr/bin/google-chrome n'est plus en cours d'exécution, donc ChromeDriver suppose que Chrome a planté" l'erreur sous Linux? - Pour celui-ci, j'ai remplacé "/ usr/bin/google-chrome" par "/ etc/alternatives/google-chrome", cela ne fonctionnait toujours pas.

Le processus démarré à partir de chrome emplacement/usr/bin/google-chrome n'est plus en cours d'exécution, donc ChromeDriver suppose que Chrome s'est écrasé pour Selenium

Selenium.common.exceptions.WebDriverException: Message: erreur inconnue: Chrome n'a pas pu démarrer: plantage avec ChromeDriver et Selenium en Python

python linux Selenium: chrome non accessible

erreur inconnue: échec du démarrage de Chrome: plantage (sélénium, mode sans tête)

python Selenium: WebDriverException: Message: chrome non joignable

Échec du démarrage du sélénium chrome

WebDriverException: Message: erreur inconnue: Chrome n'a pas pu démarrer: s'est arrêté anormalement avec ChromeDriver Chrome et Selenium via Python sur VPS

Obtention de l'erreur "Chrome inaccessible" lors de l'exécution de scripts de test dans Selenium Grid avec le navigateur Chrome

L'erreur du pilote Web Selenium Chrome n'a pas pu démarrer

org.openqa.Selenium.WebDriverException: erreur inconnue: échec du démarrage de Chrome: plantage (chrome sans tête)

Python: Selenium - Message: erreur inconnue: Chrome n'a pas pu démarrer: s'est arrêté anormalement

J'obtiens une erreur courante que j'ai vue ici sur Stack Overflow, lorsque j'exécute Selenium avec Python sur mon serveur Amazon Linux, j'obtiens les résultats suivants:

Traceback (most recent call last):
  File "test-Selenium-chrome.py", line 15, in <module>
    driver = webdriver.Chrome(options=options, executable_path='/usr/local/bin/chromedriver')  # Optional argument, if not specified will search path.i
  File "/usr/local/lib/python3.7/site-packages/Selenium/webdriver/chrome/webdriver.py", line 81, in __init__
    desired_capabilities=desired_capabilities)
  File "/usr/local/lib/python3.7/site-packages/Selenium/webdriver/remote/webdriver.py", line 157, in __init__
    self.start_session(capabilities, browser_profile)
  File "/usr/local/lib/python3.7/site-packages/Selenium/webdriver/remote/webdriver.py", line 252, in start_session
    response = self.execute(Command.NEW_SESSION, parameters)
  File "/usr/local/lib/python3.7/site-packages/Selenium/webdriver/remote/webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "/usr/local/lib/python3.7/site-packages/Selenium/webdriver/remote/errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
Selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: crashed
  (chrome not reachable)
  (The process started from chrome location /usr/bin/google-chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.)

Voici mon code:

#!/usr/bin/python3
import time
from Selenium import webdriver
from Selenium.webdriver.chrome.options import Options
from pyvirtualdisplay import Display

options = Options()
options.binary_location = '/usr/bin/google-chrome'
options.add_argument('--disable-extensions')
options.add_argument('--headless')
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
options.add_argument('--remote-debugging-port=9515')
options.add_argument('--disable-setuid-sandbox')

display = Display(visible=0, size=(800, 800))
display.start()

driver = webdriver.Chrome(options=options, executable_path='/usr/local/bin/chromedriver')  # Optional argument, if not specified will seearch path.i
driver.maximize_window()
driver.get('http://www.google.com/')
time.sleep(5)  # Let the user actually see something!
search_box = driver.find_element_by_name('q')
search_box.send_keys('ChromeDriver')
search_box.submit()
time.sleep(5)  # Let the user actually see something!
driver.quit()

J'utilise Google Chrome version 79.0.3945.130 et la version chromedriver correspondante ChromeDriver 79.0.3945.36 comme spécifié dans https://sites.google.com/a/chromium.org/chromedriver/downloads

Informations supplémentaires, si je lance simplement google-chrome à partir de la ligne de commande, j'obtiens:

[ec2-user@ip-xxx-xx-xx-xxx bin]$ pwd
/usr/bin
[ec2-user@ip-xxx-xx-x-xxx bin]$ google-chrome
Segmentation fault

Toute aide est grandement appréciée.

4
Brent Heigold

Ce message d'erreur ...

Selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: crashed
  (chrome not reachable)
  (The process started from chrome location /usr/bin/google-chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.)

... implique que ChromeDriver n'a pas pu lancer/générer une nouvelle session Contexte de navigation c'est-à-dire Chrome Browser session.


Selon la discussion dans Selenium: WebDriverException: Chrome n'a pas pu démarrer: s'est écrasé car google-chrome ne fonctionne plus donc ChromeDriver suppose que Chrome s'est écrasé , le l'emplacement par défaut de google-chrome on linux est:

/usr/bin/google-chrome

Remarque : Pour les systèmes Linux, le ChromeDriver attend /usr/bin/google-chrome pour être un lien symbolique vers le binaire réel Chrome.

Donc, idéalement, le bloc de code minimal suivant aurait dû fonctionner:

from Selenium import webdriver
from Selenium.webdriver.chrome.options import Options

options = Options()
options.binary_location = '/usr/bin/google-chrome'
driver = webdriver.Chrome(options=options, executable_path='/usr/local/bin/chromedriver')
driver.get('http://www.google.com/')

Mais il semble que lorsque vous essayez d'initier une session Chrome manuellement, Erreur de segmentation se produit, c'est-à-dire se bloque comme suit:

[ec2-user@ip-xxx-xx-xx-xxx bin]$ pwd
/usr/bin
[ec2-user@ip-xxx-xx-x-xxx bin]$ google-chrome
Segmentation fault

Défaut de segmentation

Erreur de segmentation (raccourci comme segfault) ou violation d'accès est une condition d'erreur ou de panne soulevée par le matériel avec protection de la mémoire, notifiant à un système d'exploitation que le logiciel a tenté d'accéder à une zone restreinte de Mémoire. Le noyau du système d'exploitation effectuera généralement en réponse une action corrective, transmettant généralement l'erreur au processus incriminé (votre script) en envoyant un signal au processus.

En bref, c'est un mécanisme d'aide pour empêcher les programmes/scripts de corrompre la mémoire qui ne lui appartient pas. En savoir plus ici .


Raison et solutions

Les raisons potentielles et les solutions sont:

  • Chrome n'est pas du tout installé dans le système, vous devez donc installer Chrome
  • Chrome n'est pas installé à l'emplacement par défaut, vous devez donc passer l'emplacement correct de chrome exécutable via binary_location propriété.
  • Le lien symbolique /usr/bin/google-chrome au réel Chrome binaire a été corrompu, vous devrez peut-être créer le lien symbolique.
  • L'utilisateur ne dispose pas des droits d'accès requis /usr/bin/google-chrome, vous avez donc fourni les droits d'accès.
2
DebanjanB