webentwicklung-frage-antwort-db.com.de

Selenium: WebDriverException: Chrome konnte nicht gestartet werden: Absturz, da Google-Chrome nicht mehr ausgeführt wird. ChromeDriver geht davon aus, dass Chrome abgestürzt ist

Ich bin mir bewusst, dass es mehrere Antworten auf diese Frage gibt, aber bisher hat sich für mich nichts getan, deshalb poste ich eine neue Frage.

Vor kurzem habe ich den Computer gewechselt und seitdem kann ich mit Selenium kein Chrome mehr starten. Ich habe auch Firefox ausprobiert, aber der Browser lanch nicht. 

from Selenium import webdriver

d = webdriver.Chrome('/home/PycharmProjects/chromedriver')

d.get('https://www.google.nl/')

ich erhalte folgende Fehlermeldung:

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)

ich habe die neueste chromversion und den chromedriver installiert

BEARBEITEN: Nachdem ich die @ b0sss-Lösung ausprobiert habe, erhalte ich die folgende Fehlermeldung.

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)
5
SOeh

Diese Fehlermeldung ...

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.)

... impliziert, dass der ChromeDriver keine neue WebBrowser d. h. Chrome Browser Sitzung starten/erzeugen konnte.

Ihr Hauptproblem ist, dass der Chrome Browser nicht am Standardverzeichnis in Ihrem System installiert ist.

Der Server, d. H. ChromeDriver, erwartet, dass Sie Chrome am default-Speicherort für jedes System gemäß der folgenden Abbildung installiert haben:

Chrome_binary_expected_location

1Für Linux-Systeme erwartet der ChromeDriver, dass /usr/bin/google-chrome ein Symlink zur aktuellen Chrome-Binärdatei ist. 


Lösung

Wenn Sie eine Chrome - Programmdatei an einem nicht standardmäßigen Speicherort verwenden, müssen Sie den binären Speicherort von Chrome überschreiben. wie folgt:

Chrome executable in a non-standard location

4
DebanjanB

Versuchen Sie HIER herunterzuladen und verwenden Sie diese neueste Chrome-Treiberversion.

https://sites.google.com/a/chromium.org/chromedriver/downloads

BEARBEITEN:

Versuche dies:

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/')
5
NgoCuong

Ich hatte ein ähnliches Problem und stellte fest, dass Optionsargumente müssen in einer bestimmten Reihenfolge vorliegen. Mir sind nur die beiden Argumente bekannt, die erforderlich waren, damit dies auf meinem Ubuntu 18-Computer funktioniert. Dieser Beispielcode hat an meinem Ende funktioniert:

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/')
5
Ethan Hill

hoffe das hilft jemandem. das hat bei mir unter Ubuntu 18.10 geklappt

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()
4
dataviews

in meinem fall war der fehler bei www-data user aber nicht bei normal user on development. Der Fehler war ein Problem beim Initialisieren einer x-Anzeige für diesen Benutzer. Das Problem wurde behoben, indem mein Selenium-Test ohne Öffnen eines Browserfensters ohne Kopf ausgeführt wurde:

opts.set_headless(True)
4
Rogelio

Ich habe ein genaues Problem beim Docker-Container (in der Build-Umgebung) festgestellt. Nach ssh in den Container habe ich versucht, den Test manuell auszuführen und stieß immer noch darauf 

(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.)

Wenn ich versucht habe, Chrome /usr/bin/google-chrome-stable lokal auszuführen, Fehlermeldung 

Running as root without --no-sandbox is not supported

Ich habe meine ChromeOptions überprüft und es fehlte --no-sandbox, weshalb Chrom nicht erzeugt werden konnte.

capabilities = Selenium::WebDriver::Remote::Capabilities.chrome(
  chromeOptions: { args: %w(headless --no-sandbox disable-gpu window-size=1920,1080) }
)
1
ibaralf

Vorausgesetzt, Sie haben bereits chromeDriver heruntergeladen, tritt dieser Fehler auch auf, wenn bereits mehrere Chrome-Registerkarten geöffnet sind.

Wenn Sie alle Registerkarten schließen und erneut ausführen, sollte der Fehler behoben werden. 

0
tugce

Dieser Fehler ist zufällig während meiner Testläufe in den letzten sechs Monaten aufgetreten (passiert immer noch mit Chrome 76 und Chromedriver 76)) und nur unter Linux. Durchschnittlich würde einer von ein paar hundert Tests fehlschlagen. dann würde der nächste Test gut laufen.

Das Problem konnte nicht behoben werden. In Python Ich habe die Funktion driver = webdriver.Chrome() in einen try..except-Block in setUp () in meiner Testfallklasse eingeschlossen, von der alle meine Tests abgeleitet sind Wenn es die Webdriver-Ausnahme trifft, wartet es zehn Sekunden und versucht es erneut.

Es löste das Problem, das ich hatte; nicht elegant, aber es funktioniert.

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)
0
The Stevie T