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)
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:
1Für Linux-Systeme erwartet der ChromeDriver, dass /usr/bin/google-chrome
ein Symlink zur aktuellen Chrome-Binärdatei ist.
Wenn Sie eine Chrome - Programmdatei an einem nicht standardmäßigen Speicherort verwenden, müssen Sie den binären Speicherort von Chrome überschreiben. wie folgt:
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/')
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/')
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()
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)
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) }
)
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.
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)