Ausführen von Selenium WebDriver-Python-Bindungen in Chrome


147

Bei der Arbeit mit Selen bin ich auf ein Problem gestoßen. Für mein Projekt muss ich Chrome verwenden. Ich kann jedoch keine Verbindung zu diesem Browser herstellen, nachdem ich ihn mit Selenium gestartet habe.

Aus irgendeinem Grund kann Selenium Chrome nicht selbst finden. Dies passiert, wenn ich versuche, Chrome ohne Pfad zu starten:

Traceback (most recent call last):
  File "./obp_pb_get_csv.py", line 73, in <module>
    browser = webdriver.Chrome() # Get local session of chrome
  File "/usr/lib64/python2.7/site-packages/selenium/webdriver/chrome/webdriver.py", line 46, in __init__
    self.service.start()
  File "/usr/lib64/python2.7/site-packages/selenium/webdriver/chrome/service.py", line 58, in start
    and read up at http://code.google.com/p/selenium/wiki/ChromeDriver")
selenium.common.exceptions.WebDriverException: Message: 'ChromeDriver executable needs to be available in the path.                 Please download from http://code.google.com/p/selenium/downloads/list                and read up at http://code.google.com/p/selenium/wiki/ChromeDriver'

Um dieses Problem zu lösen, habe ich den Chromium-Pfad in den Code aufgenommen, mit dem Chrome gestartet wird. Der Interpreter findet jedoch keinen Socket, zu dem eine Verbindung hergestellt werden kann:

Traceback (most recent call last):
  File "./obp_pb_get_csv.py", line 73, in <module>
    browser = webdriver.Chrome('/usr/bin/chromium') # Get local session of chrome
  File "/usr/lib64/python2.7/site-packages/selenium/webdriver/chrome/webdriver.py", line 46, in __init__
    self.service.start()
  File "/usr/lib64/python2.7/site-packages/selenium/webdriver/chrome/service.py", line 64, in start
    raise WebDriverException("Can not connect to the ChromeDriver")
selenium.common.exceptions.WebDriverException: Message: 'Can not connect to the ChromeDriver'

Ich habe auch versucht, das Problem zu lösen, indem ich Chrome gestartet habe mit:

Chrom - Fernschalenport = 9222

Dies funktionierte jedoch auch nicht.

PS. Hier einige Informationen zu meinem System:

www-client: chrom 15.0.874.121  
dev-lang: Python 2.7.2-r3 Selen 2.11.1  
Betriebssystem: GNU / Linux Gentoo Kernel 3.1.0-gentoo-r1

Ich wollte Sie nur wissen lassen, dass "--remote-shell-port" keine gültige Befehlszeilenoption ist. Siehe: peter.sh/experiments/chromium-command-line-switches ("--remote-debugging-port" wäre der richtige. Bitte beachten Sie, dass Sie alle Chrominstanzen schließen müssen, bevor Sie diese Option verwenden neues Fenster in einer vorhandenen Browsersitzung funktioniert nicht).
dpat

Antworten:


133

Sie müssen sicherstellen, dass sich die eigenständige ChromeDriver-Binärdatei (die sich von der Chrome-Browser-Binärdatei unterscheidet) entweder in Ihrem Pfad befindet oder in der Umgebungsvariablen webdriver.chrome.driver verfügbar ist.

Ausführliche Informationen zum Verdrahten finden Sie unter http://code.google.com/p/selenium/wiki/ChromeDriver .

Bearbeiten:

Richtig, scheint ein Fehler in den Python-Bindungen beim Lesen der Chromedriver-Binärdatei aus dem Pfad oder der Umgebungsvariablen zu sein. Wenn sich chromedriver nicht in Ihrem Pfad befindet, müssen Sie ihn als Argument an den Konstruktor übergeben.

import os
from selenium import webdriver

chromedriver = "/Users/adam/Downloads/chromedriver"
os.environ["webdriver.chrome.driver"] = chromedriver
driver = webdriver.Chrome(chromedriver)
driver.get("http://stackoverflow.com")
driver.quit()

Entschuldigung, vergessen Sie das zu erwähnen. Ich habe diesen Link.
Akendo

2
Versuchte den Chromedriver anstelle von Firefox Webdriver .. fast 3-fache Leistungssteigerung ..
UberNeo

4
Ich möchte auch nur erwähnen, dass das an den Konstruktor übergebene Argument der Pfad zur ChromeDriver-Binärdatei ist und nicht das Verzeichnis, das die ChromeDriver-Binärdatei enthält (es wurde die letzte halbe Stunde verschwendet, um herauszufinden, was falsch lief).
TheRookierLearner

107

Für Linux

  1. Überprüfen Sie, ob Sie die neueste Version von Chrome Brwoser-> installiert haben chromium-browser -version
  2. Wenn nicht, installieren Sie die neueste Version von Chrome sudo apt-get install chromium-browser
  3. entsprechende Version von Chrom - Treiber erhalten von hier
  4. Entpacken Sie die Datei chromedriver.zip
  5. Verschieben Sie die Datei in das /usr/binVerzeichnissudo mv chromedriver /usr/bin
  6. Gehe zu /usr/binVerzeichniscd /usr/bin
  7. Jetzt müssten Sie so etwas wie sudo chmod a+x chromedriverausführen, um es als ausführbar zu markieren.
  8. Endlich können Sie den Code ausführen.

    from selenium import webdriver
    
    driver = webdriver.Chrome()
    driver.get("http://www.google.com")
    print driver.page_source.encode('utf-8')
    driver.quit()
    display.stop()

1
Sehr schön! Ein Hinweis: Ich konnte dies nur mit dem 32-Bit-Chromedriver zum Laufen bringen, obwohl ich 64-Bit-Linux verwende.
Imran

Unter Ubuntu (14.04) können Sie das Chrom-Chrom-Treiber-Paket (z. B. mit apt-get) installieren und den Pfad der Chromedriver-Datei zur PATH-Shell-Variablen PATH = "$ {PATH}" hinzufügen: / usr / lib / chrom-browser / Wenn Sie dies zu Ihrer .bashrc hinzufügen, müssen Sie es nicht jedes Mal einstellen, wenn Sie mit Selen testen möchten.
Arpad Horvath

1
Eigentlich sollte diese Antwort viel mehr positive Stimmen haben. Im Grunde ist dies der richtige Weg für jeden Fahrer wie den Geckodriver.
Holzkohlengrill

Meine Chrom-Browser-Version wird als (Chromium 67.0.3396.99 Built on Ubuntu, läuft unter Ubuntu 16.04) erwähnt, aber der Link hat nur Versionen als 2.0-2.9. Hilfe benötigen.
Vaibhav Maheshwari

93

Nur Mac OSX

Ein einfacher Weg, um loszulegen (vorausgesetzt, Sie haben bereits Homebrew installiert. Wenn nicht, sollten Sie dies zuerst tun und Homebrew Ihr Leben verbessern lassen), indem Sie einfach den folgenden Befehl ausführen:

brew install chromedriver

Das sollte den Chromedriver in deinen Weg bringen und du solltest fertig sein.


Auf dem Mac funktioniert es nicht. selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable needs to be in PATH.
Wyx

1
@wyx Ihre Umgebung ist möglicherweise nicht richtig eingerichtet. Versuchen Sie zu rennen brew doctorund sehen Sie, ob das etwas findet.
Jachin

2
Dies ist einer dieser warmen und verschwommenen Momente, in denen Sie nur froh sind, einen Mac zu haben. So einfach.
Benutzer

HERZ! Ich liebe Brauen
RHSMan

52

Für Windows

Laden Sie ChromeDriver über diesen direkten Link herunter ODER holen Sie sich die neueste Version von dieser Seite .

Fügen Sie die chromedriver.exeDatei in Ihren C:\Python27\ScriptsOrdner ein.

Das sollte jetzt funktionieren:

from selenium import webdriver
driver = webdriver.Chrome()

23

Für Fenster bitte chromedriver.exeunter platzieren<Install Dir>/Python27/Scripts/


und wo in Ubuntu setzen? int /usr/lib/oder woanders?
Gaurav Jain

Die Datei zu haben PATHwar nicht genug, um sie /Scripts/dort abzulegen, wo sie ride.pyfunktioniert.
Qwerty

1

Es gibt zwei Möglichkeiten, Selenium-Python-Tests in Google Chrome auszuführen. Ich denke über Windows nach (in meinem Fall Windows 10):

Voraussetzung: Laden Sie den neuesten Chrome-Treiber von folgender Adresse herunter: https://sites.google.com/a/chromium.org/chromedriver/downloads

Weg 1:

i) Extrahieren Sie die heruntergeladene Zip-Datei in ein Verzeichnis / einen Speicherort Ihrer Wahl.
ii) Legen Sie den ausführbaren Pfad in Ihrem Code wie folgt fest:

self.driver = webdriver.Chrome(executable_path='D:\Selenium_RiponAlWasim\Drivers\chromedriver_win32\chromedriver.exe')

Weg 2:

i) Fügen Sie einfach die Datei chromedriver.exe unter / Python / Scripts / ein (in meinem Fall war der Ordner: C: \ Python36 \ Scripts)
ii) Schreiben Sie nun den einfachen Code wie folgt :

self.driver = webdriver.Chrome()

-1

Für die Windows-IDE:

Wenn Ihr Pfad nicht funktioniert, können Sie versuchen, den Pfad chromedriver.exewie in dieser Projektstruktur zu Ihrem Projekt hinzuzufügen .

chromedriver.exe

Dann sollten Sie das chromedriver.exein Ihre Hauptdatei laden . Ich habe das driver.exein geladen driver.py.

def get_chrome_driver():
return webdriver.Chrome("..\\content\\engine\\chromedriver.exe",
                            chrome_options='--no-startup-window')

..bedeutet driver.py'soberes Verzeichnis

.bedeutet das Verzeichnis, in dem driver.pysich das befindet

Hoffe das wird hilfreich sein.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.