Selen mit Python - Geckodriver ausführbare Datei muss in PATH sein

435

Ich bin neu in der Programmierung und habe mit angefangen Python ungefähr 2 Monaten und gehe Sweigarts Automate the Boring Stuff mit Python- Text durch. Ich verwende IDLE und habe bereits das Selen-Modul und den Firefox-Browser installiert. Immer wenn ich versucht habe, die Webdriver-Funktion auszuführen, erhalte ich Folgendes:

from selenium import webdriver
browser = webdriver.Firefox()

Ausnahme: -

Exception ignored in: <bound method Service.__del__ of <selenium.webdriver.firefox.service.Service object at 0x00000249C0DA1080>>
Traceback (most recent call last):
  File "C:\Python\Python35\lib\site-packages\selenium\webdriver\common\service.py", line 163, in __del__
    self.stop()
  File "C:\Python\Python35\lib\site-packages\selenium\webdriver\common\service.py", line 135, in stop
    if self.process is None:
AttributeError: 'Service' object has no attribute 'process'
Exception ignored in: <bound method Service.__del__ of <selenium.webdriver.firefox.service.Service object at 0x00000249C0E08128>>
Traceback (most recent call last):
  File "C:\Python\Python35\lib\site-packages\selenium\webdriver\common\service.py", line 163, in __del__
    self.stop()
  File "C:\Python\Python35\lib\site-packages\selenium\webdriver\common\service.py", line 135, in stop
    if self.process is None:
AttributeError: 'Service' object has no attribute 'process'
Traceback (most recent call last):
  File "C:\Python\Python35\lib\site-packages\selenium\webdriver\common\service.py", line 64, in start
    stdout=self.log_file, stderr=self.log_file)
  File "C:\Python\Python35\lib\subprocess.py", line 947, in __init__
    restore_signals, start_new_session)
  File "C:\Python\Python35\lib\subprocess.py", line 1224, in _execute_child
    startupinfo)
FileNotFoundError: [WinError 2] The system cannot find the file specified

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<pyshell#11>", line 1, in <module>
    browser = webdriver.Firefox()
  File "C:\Python\Python35\lib\site-packages\selenium\webdriver\firefox\webdriver.py", line 135, in __init__
    self.service.start()
  File "C:\Python\Python35\lib\site-packages\selenium\webdriver\common\service.py", line 71, in start
    os.path.basename(self.path), self.start_error_message)
selenium.common.exceptions.WebDriverException: Message: 'geckodriver' executable needs to be in PATH. 

Ich denke, ich muss den Weg festlegen, bin mir geckodriveraber nicht sicher, wie. Kann mir jemand sagen, wie ich das machen soll?

tadm123
quelle
2
Bitte sehen Sie meine Antwort auf ähnliche Frage hier
Andrew
Ich lege die Datei geckodriver.exe in das Verzeichnis Python / Python35, damit sie denselben Pfad hat und ich noch mehr Probleme bekomme.
Tadm123
80
Auf Mac:brew install geckodriver
Nostalg.io
1
Ich habe festgestellt, dass das Ausführen über den Chrome-Browser etwas schneller ist als unter Firefox chromedriver. Dazu müssen Sie nur das herunterladen .
Tadm123
Hinweis: Es gibt Testcafe , das kürzlich als Open-Source - Version angeboten wurde . Es sind keine Browser-Plugins erforderlich, sie sind integriert. Ich wollte Selen verwenden, aber das scheint eine interessante Alternative zu sein.
Ehvince

Antworten:

354

selenium.common.exceptions.WebDriverException: Nachricht: Die ausführbare Datei 'geckodriver' muss sich in PATH befinden.

Zunächst müssen Sie den neuesten ausführbaren Geckodriver von hier herunterladen, um den neuesten Firefox mit Selen auszuführen

Tatsächlich versuchen die Selenium-Client-Bindungen, die geckodriverausführbare Datei vom System aus zu finden PATH. Sie müssen das Verzeichnis mit der ausführbaren Datei zum Systempfad hinzufügen.

  • Auf Unix-Systemen können Sie Folgendes tun, um es an den Suchpfad Ihres Systems anzuhängen, wenn Sie eine Bash-kompatible Shell verwenden:

    export PATH=$PATH:/path/to/directory/of/executable/downloaded/in/previous/step
  • Unter Windows müssen Sie die Systemvariable Path aktualisieren , um den vollständigen Verzeichnispfad manuell oder über die Befehlszeile zum ausführbaren Geckodriver hinzuzufügen (vergessen Sie nicht, Ihr System neu zu starten, nachdem Sie den ausführbaren Geckodriver zum Systempfad hinzugefügt haben, damit er wirksam wird) . Das Prinzip ist das gleiche wie unter Unix.

Jetzt können Sie Ihren Code wie folgt ausführen: -

from selenium import webdriver

browser = webdriver.Firefox()

selenium

Die Ausnahme besagt eindeutig, dass Sie Firefox an einem anderen Ort installiert haben, während Selenium versucht, Firefox zu finden und vom Standardspeicherort aus zu starten, aber nicht gefunden werden konnte. Sie müssen den explizit installierten binären Speicherort von Firefox angeben, um Firefox wie folgt zu starten: -

from selenium import webdriver
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary

binary = FirefoxBinary('path/to/installed firefox binary')
browser = webdriver.Firefox(firefox_binary=binary)
Saurabh Gaur
quelle
8
Danke, aber ich habe das my geckodriver.exeim C:\Python\Python35\seleniumVerzeichnis festgelegt und den Pfad wie von Ihnen beschrieben festgelegt, aber es gibt mir den folgenden Fehler:
tadm123
4
Danke @Saurabh Gaur, es funktioniert jetzt. Ich habe den Pfad von Firefox manuell zu den Systemvariablen hinzugefügt und alles funktioniert. Der Start dauert ein wenig, aber ich denke, das ist normal. Vielen Dank!
Tadm123
3
Ich habe die Fehlermeldung "WebDriverException: Meldung: Browser konnte nicht gestartet werden: Berechtigung verweigert" erhalten, als ich anfing, den Firefox-Binärpfad anzugeben, aber ein Neustart des Computers (Windows 10) hat das Problem behoben. - Nur für den Fall, dass jemand anderes das gleiche Problem wie ich hat.
NoSuchElephantException
3
Was ist die Binärdatei? Bedeutet das ausführbar?
Benutzer
12
Zusätzlich zu dieser Antwort möchte ich die Einstellung der PATHIn-Unix-Umgebung erweitern. Sie können es in Code setzen, da Sie es nicht systemweit benötigen: os.environ["PATH"] += os.pathsep + 'path/to/dir/containing/geckodriver/' Oder behalten Sie einfach die Geckodriver-Binärdatei in dem Verzeichnis, das sich bereits in Ihrem Pfad befindet:mv geckodriver /usr/local/bin
dsalaj
159

Das hat es für mich gelöst.

from selenium import webdriver
driver = webdriver.Firefox(executable_path=r'your\path\geckodriver.exe')
driver.get('http://inventwithpython.com')
Nesa
quelle
Wenn Sie eine falsche Berechtigung erhalten, versuchen Sie, [r '] aus dem Pfad zu entfernen, nur "excecutable_path =' path \ to \ your'diretory '"
Darius
@adityarawat Auf welchem ​​Betriebssystem bist du?
Nesa
aber jetzt bekomme ich OSError statt falscher Berechtigungen. Ich habe es irgendwie geschafft, geckodriver nach / usr / local / bin zu kopieren. aber jetzt
bringt
@adityarawat Sie können geckodriver unabhängig von hier herunterladen: github.com/mozilla/geckodriver/releases extrahieren Sie es mit tar und machen Sie es ausführbar mit chmod + x, es muss nicht in / usr / local / bin sein, Sie haben es nur um Ihren Weg
dorthin
Um ganz klar zu sein, habe ich die Datei arm7hf.tar heruntergeladen und ebenfalls extrahiert und sie mit dem Befehl zum Pfad hinzugefügt export PATH=$PATH:geckodriver(sie wird in Desktop extrahiert). Aber es hat auch nicht geholfen. Ich bekomme immer noch OSError [errno 8]
aditya rawat
121

Diese Schritte wurden für mich auf Ubuntu Firefox 50 gelöst.

  1. Laden Sie geckodriver herunter

  2. Kopieren Sie den Geckodriver in / usr / local / bin

Sie müssen NICHT hinzufügen

firefox_capabilities = DesiredCapabilities.FIREFOX
firefox_capabilities['marionette'] = True
firefox_capabilities['binary'] = '/usr/bin/firefox'
browser = webdriver.Firefox(capabilities=firefox_capabilities)
Andrea Perdicchia
quelle
In Ihrem Code können Sie die Fähigkeitsvariable nicht hinzufügen
Andrea Perdicchia
Würdest du zufällig wissen, wie man das Download-Verzeichnis für Firefox einstellt? Ich habe die folgende Frage hinzugefügt: Firefox-Einstellungen festlegen . Jede Hilfe wäre sehr dankbar.
d84_n1nj4
In Debian oder Ubuntu müssen Sie den Befehl apt verwenden, um Firefox zu installieren. Für Windows habe ich keine Ahnung, sorry
Andrea Perdicchia
Vielen Dank. Nachdem ich diese Antwort angewendet hatte
HackNone
Danke, Pycharm hat Geckodriver nicht gefunden, obwohl es sich zu Hause und im Projektordner selbst befand, aber nachdem es nach / usr / local / bin verschoben wurde, hat es perfekt funktioniert
Ronald Das
32

Die Antwort von @saurabh löst das Problem, erklärt aber nicht, warum das langweilige Zeug mit Python automatisiert wird diese Schritte nicht enthält.

Dies wird dadurch verursacht, dass das Buch auf Selen 2.x basiert und der Firefox-Treiber für diese Serie den Gecko-Treiber nicht benötigt. Die Gecko-Oberfläche zum Ansteuern des Browsers war bei der Entwicklung von Selen nicht verfügbar.

Die neueste Version der Selenium 2.x-Serie ist 2.53.6 (siehe z. B. diese Antworten für eine einfachere Ansicht der Versionen).

Auf der Versionsseite 2.53.6 wird Gecko überhaupt nicht erwähnt. Seit Version 3.0.2 heißt es in der Dokumentation jedoch ausdrücklich, dass Sie den Geckotreiber installieren müssen.

Wenn nach einem Upgrade (oder einer Installation auf einem neuen System) Ihre zuvor einwandfreie Software (oder auf Ihrem alten System) nicht mehr funktioniert und Sie es eilig haben, stecken Sie die Selen-Version in Ihre virtuelle Umgebung, indem Sie dies tun

pip install selenium==2.53.6

Aber die langfristige Lösung für die Entwicklung besteht natürlich darin, eine neue virtuelle Umgebung mit der neuesten Version von Selen einzurichten, den Gecko-Treiber zu installieren und zu testen, ob alles noch wie erwartet funktioniert. Die Hauptversion führt jedoch möglicherweise zu anderen API-Änderungen, die in Ihrem Buch nicht behandelt werden. Sie sollten sich also an das ältere Selen halten, bis Sie sicher genug sind, dass Sie etwaige Diskrepanzen zwischen der Selenium2- und der Selenium3-API selbst beheben können.

Anthon
quelle
2
Ich wünschte, dies wäre die beste Antwort
Sudo-Nim
1
das hat mir geholfen, danke Anthon
ghost21blade
24

Unter macOS mit bereits installiertem Homebrew können Sie einfach den Terminal-Befehl ausführen

$ brew install geckodriver

Da Homebrew das bereits erweitert PATHhat, müssen keine Startskripte geändert werden.

Roskakori
quelle
@roskakori Ich habe dies getan und es wurde erfolgreich installiert, aber ich erhalte immer noch den gleichen Fehler
JKC
Das hat es für mich getan, danke. Verwenden von Firefox 72.0.2 und Selen 3.141.0
Sam
17

So richten Sie Geckodriver für Selenium Python ein:

Es muss den Geckodriver-Pfad mit FirefoxDriver wie folgt festlegen:

self.driver = webdriver.Firefox(executable_path = 'D:\Selenium_RiponAlWasim\geckodriver-v0.18.0-win64\geckodriver.exe')

Laden Sie geckodriver für Ihr geeignetes Betriebssystem herunter (von https://github.com/mozilla/geckodriver/releases ) -> Extrahieren Sie es in einen Ordner Ihrer Wahl -> Stellen Sie den Pfad wie oben beschrieben richtig ein

Ich verwende Python 3.6.2 und Selenium WebDriver 3.4.3 in Windows 10.

Eine andere Möglichkeit, Geckodriver einzurichten:

i) Fügen Sie einfach die Datei geckodriver.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.Firefox()
Ripon Al Wasim
quelle
17

Wenn Sie Anaconda verwenden , müssen Sie lediglich Ihre virtuelle Umgebung aktivieren und dann geckodriver mit dem folgenden Befehl installieren :

    conda install -c conda-forge geckodriver
Rodolfo Alvarez
quelle
Ja, es installiert geckodriver, aber der Pycharmfehler bleibt gleich.
WebComer
Hallo, ich habe viele Dinge ausprobiert und das ist das einzige, was für mich funktioniert hat :-) Danke
tezzaaa
12

Ubuntu 18.04+ und neueste Version von geckodriver

Dies sollte auch für andere * nix-Sorten funktionieren.

export GV=v0.26.0
wget "https://github.com/mozilla/geckodriver/releases/download/$GV/geckodriver-$GV-linux64.tar.gz"
tar xvzf geckodriver-$GV-linux64.tar.gz 
chmod +x geckodriver
sudo cp geckodriver /usr/local/bin/

Für Mac Update auf:

geckodriver-$GV-macos.tar.gz
jmunsch
quelle
12

Ich sehe, dass in den Diskussionen immer noch über die alte Methode zum Einrichten von Geckodriver gesprochen wird, indem die Binärdatei heruntergeladen und der Pfad manuell konfiguriert wird.

Dies kann automatisch mit dem Webdriver-Manager erfolgen

pip install webdriver-manager

Jetzt funktioniert der obige Code in der Frage einfach mit der folgenden Änderung:

from selenium import webdriver
from webdriver_manager.firefox import GeckoDriverManager

driver = webdriver.Firefox(executable_path=GeckoDriverManager().install())
Navarasu
quelle
2
Das hat bei mir funktioniert. Vielen Dank!
Igorkf
Hat Safari oder sogar Internet Explorer einen ähnlichen Treibermanager?
Mischief_Monkey
11

Der einfachste Weg für Windows!
Laden Sie die neueste Version von geckodrivervon hier . Fügen Sie die Datei geckodriver.exe hinzu Datei dem Python-Verzeichnis (oder einem anderen Verzeichnis, das sich bereits befindet PATH) hinzu. Dies sollte das Problem lösen (Getestet unter Windows 10)

Jalles10
quelle
Ist nicht Windows das Schlimmste. Danke für die schnelle Lösung.
AJ_
Dies ist bei weitem die einfachste Lösung! Sie müssen Ihren Computer nicht einmal neu starten!
Olenscki
8

Schritte für MAC:

Die einfache Lösung besteht darin, GeckoDriver herunterzuladen und Ihrem Systempfad hinzuzufügen. Sie können einen der beiden Ansätze verwenden:

Kurze Methode:

1) Geckodriver herunterladen und entpacken .

2) Erwähnen Sie den Pfad, während Sie den Treiber starten:

driver = webdriver.Firefox(executable_path='/your/path/to/geckodriver')

Lange Methode:

1) Geckodriver herunterladen und entpacken .

2) Öffnen .bash_profile. Wenn Sie es noch nicht erstellt haben, können Sie dies mit dem folgenden Befehl tun : touch ~/.bash_profile. Öffnen Sie es dann mit:open ~/.bash_profile

3) Da die GeckoDriver-Datei in Ihrem Download-Ordner vorhanden ist, können Sie der .bash_profileDatei die folgenden Zeilen hinzufügen :

PATH="/Users/<your-name>/Downloads/geckodriver:$PATH"
export PATH

Auf diese Weise hängen Sie den Pfad zu GeckoDriver an Ihren Systempfad an. Dies teilt dem System mit, wo sich GeckoDriver befindet, wenn Sie Ihre Selenium-Skripte ausführen.

4) Speichern Sie die .bash_profileund erzwingen Sie die Ausführung. Dadurch werden die Werte sofort geladen, ohne dass ein Neustart erforderlich ist. Dazu können Sie den folgenden Befehl ausführen:

source ~/.bash_profile

5) Das war's. Du bist fertig!. Sie können das Python-Skript jetzt ausführen.

Umang Sardesai
quelle
1
Ich konnte geckodrivermit Homebrew herunterladen : brew install geckodriverund dann Firefox initiieren über:driver = webdriver.Firefox(executable_path="/usr/local/bin/geckodriver")
Winterflags
7

Einige zusätzliche Beiträge / Erläuterungen für zukünftige Leser dieses Threads:

Als Lösung für Windows 7, Python 3.6, Selen 3.11 reicht Folgendes aus:

Der Hinweis von @ dsalaj in diesem Thread für Unix gilt auch für Windows. Basteln mit dem PATH env. Variablen auf Windows-Ebene und ein Neustart des Windows-Systems können vermieden werden.

(1) Laden Sie geckodriver herunter (wie in diesem Thread zuvor beschrieben) und platzieren Sie die (entpackte) geckdriver.exe unter X: \ Folder \ Ihrer \ Wahl

(2) Python-Codebeispiel:

import os;
os.environ["PATH"] += os.pathsep + r'X:\Folder\of\your\choice';

from selenium import webdriver;
browser = webdriver.Firefox();
browser.get('http://localhost:8000')
assert 'Django' in browser.title

Hinweise: (1) Es kann ungefähr 10 Sekunden dauern, bis der obige Code den Firefox-Browser für die angegebene URL öffnet.
(2) Die Python-Konsole zeigt den folgenden Fehler an, wenn auf der angegebenen URL noch kein Server ausgeführt wird oder eine Seite mit dem Titel "Django" bereitgestellt wird: selenium.common.exceptions.WebDriverException: Nachricht: Erreichte Fehlerseite: about : neterror? e = connectionFailure & u = http% 3A // localhost% 3A8000 / & c = UTF-8 & f = regulär & d = Firefox% 20can% E2% 80% 9

Snidhi Sofpro
quelle
Vielen Dank, ich habe alle anderen Lösungen ausprobiert, aber nur Ihre haben unter Windows funktioniert!
pso
4

Ich habe tatsächlich festgestellt, dass Sie den neuesten Geckodriver verwenden können, ohne ihn in den Systempfad einzufügen. Zur Zeit benutze ich

https://github.com/mozilla/geckodriver/releases/download/v0.12.0/geckodriver-v0.12.0-win64.zip

Firefox 50.1.0

Python 3.5.2

Selen 3.0.2

Windows 10

Ich verwende ein VirtualEnv (das ich mit PyCharm verwalte, ich nehme an, es verwendet Pip, um alles zu installieren).

Im folgenden Code kann ich mithilfe des ausführbaren_Pfad-Parameters einen bestimmten Pfad für den Geckodriver verwenden (dies wurde durch einen Blick in Lib \ site-packages \ selenium \ webdriver \ Firefox \ webdriver.py festgestellt). Hinweis Ich habe den Verdacht, dass die Reihenfolge der Parameterargumente beim Aufrufen des Webtreibers wichtig ist, weshalb der ausführbare Pfad in meinem Code der letzte ist (vorletzte Zeile ganz rechts).

Möglicherweise stellen Sie auch fest, dass ich ein benutzerdefiniertes Firefox-Profil verwende, um das Problem sec_error_unknown_issuer zu umgehen, auf das Sie stoßen, wenn die Site, die Sie testen, über ein nicht vertrauenswürdiges Zertifikat verfügt. sehen So deaktivieren Sie die nicht vertrauenswürdige Verbindungswarnung von Firefox mithilfe von Selenium.

Nach einer Untersuchung wurde festgestellt, dass der Marionetten-Treiber unvollständig ist und sich noch in Bearbeitung befindet und dass das Festlegen verschiedener Funktionen oder Profiloptionen zum Entlassen oder Festlegen von Zertifikaten nicht funktionieren würde. Es war also einfacher, ein benutzerdefiniertes Profil zu verwenden.

Wie auch immer, hier ist der Code, wie ich den Geckodriver zum Arbeiten gebracht habe, ohne im Pfad zu sein:

from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

firefox_capabilities = DesiredCapabilities.FIREFOX
firefox_capabilities['marionette'] = True

#you probably don't need the next 3 lines they don't seem to work anyway
firefox_capabilities['handleAlerts'] = True
firefox_capabilities['acceptSslCerts'] = True
firefox_capabilities['acceptInsecureCerts'] = True

#In the next line I'm using a specific FireFox profile because
# I wanted to get around the sec_error_unknown_issuer problems with the new Firefox and Marionette driver
# I create a FireFox profile where I had already made an exception for the site I'm testing
# see https://support.mozilla.org/en-US/kb/profile-manager-create-and-remove-firefox-profiles#w_starting-the-profile-manager

ffProfilePath = 'D:\Work\PyTestFramework\FirefoxSeleniumProfile'
profile = webdriver.FirefoxProfile(profile_directory=ffProfilePath)
geckoPath = 'D:\Work\PyTestFramework\geckodriver.exe'
browser = webdriver.Firefox(firefox_profile=profile, capabilities=firefox_capabilities, executable_path=geckoPath)
browser.get('http://stackoverflow.com')
Roochiedoor
quelle
Ich habe SyntaxError: (Unicode-Fehler) Der Codec 'unicodeescape' kann keine Bytes dekodieren ... Und ich muss den Gecko-Pfad in epath = r'C: \ Users \ step_ \ Documents \ mtg_buyer \ geckodrivers \ geckodriver.exe 'ändern. Vielleicht liegt der Grund darin, dass ich ein chinesisches Windows 10 verwende?
Endle_Zhenbo
3

Ich benutze Windows 10 und das hat bei mir funktioniert:

  1. Laden Sie geckodriver hier herunter . Laden Sie die richtige Version für den von Ihnen verwendeten Computer herunter
  2. Entpacken Sie die gerade heruntergeladene Datei und schneiden / kopieren Sie die darin enthaltene ".exe" -Datei
  3. Navigieren Sie zu C: {Ihr Python-Stammordner}. Meins war C: \ Python27. Fügen Sie die Datei geckodriver.exe in diesen Ordner ein.
  4. Starten Sie Ihre Entwicklungsumgebung neu.
  5. Versuchen Sie erneut, den Code auszuführen. Er sollte jetzt funktionieren.
Edgar N.
quelle
Vielen Dank, dass Sie erwähnt haben, dass Sie Ihre Entwicklungsumgebung neu starten müssen.
Tief
3

Erwägen Sie die Installation eines containerisierten Firefox:

docker pull selenium/standalone-firefox
docker run --rm -d -p 5555:4444 --shm-size=2g selenium/standalone-firefox

Verbinden mit webdriver.Remote:

driver = webdriver.Remote('http://localhost:5555/wd/hub', DesiredCapabilities.FIREFOX)
driver.set_window_size(1280, 1024)
driver.get('https://toolbox.googleapps.com/apps/browserinfo/')
driver.save_screenshot('info.png')
Max Malysh
quelle
2

Es ist wirklich ziemlich traurig, dass keines der auf Selenium / Python veröffentlichten Bücher und die meisten Kommentare zu diesem Thema über Google die Pfadlogik für die Einrichtung auf dem Mac nicht klar erklären (alles ist Windows !!!!). Die Youtubes nehmen alle am "After" auf, wenn Sie das Pathing-Setup haben (meiner Meinung nach der billige Ausweg!). Verwenden Sie für wundervolle Mac-Benutzer Folgendes, um Ihre Bash-Pfad-Dateien zu bearbeiten:

> $ touch ~ / .bash_profile; öffne ~ / .bash_profile

Fügen Sie dann einen Pfad wie diesen hinzu ... * # PATH für geckodriver festlegen PATH = "/ usr / bin / geckodriver: $ {PATH}" export PATH

PATH für Selenium Firefox einstellen

PATH = "~ / Users / yourNamePATH / VEnvPythonInterpreter / lib / python2.7 / site-packages / selenium / webdriver / Firefox /: $ {PATH}" export PATH

Festlegen des Pfads für die ausführbare Datei im Firefox-Treiber

PATH = "/ Users / yournamePATH / VEnvPythonInterpreter / lib / python2.7 / site-packages / selenium / webdriver / common / service.py: $ {PATH}" export PATH *

Das hat bei mir funktioniert. Ich mache mir Sorgen, wann die Selenium Windows-Community mit dem Spielen des echten Spiels beginnt und uns Mac-Benutzer in ihre arrogante Clubmitgliedschaft einbezieht.

JustASteve
quelle
2

Selen beantwortet diese Frage in ihrer DESCRIPTION.rst

Drivers
=======

Selenium requires a driver to interface with the chosen browser. Firefox,
for example, requires `geckodriver <https://github.com/mozilla/geckodriver/releases>`_, which needs to be installed before the below examples can be run. Make sure it's in your `PATH`, e. g., place it in `/usr/bin` or `/usr/local/bin`.

Failure to observe this step will give you an error `selenium.common.exceptions.WebDriverException: Message: 'geckodriver' executable needs to be in PATH.

Laden Sie einfach den Geckodriver herunter, entpacken Sie ihn und verschieben Sie die ausführbare Datei in Ihren Ordner / usr / bin

Peter Graham
quelle
Dieses Zitat enthält die Anweisungen, die unter Linux Mint 18 funktioniert haben.
Elliot Robert
2

Für Windows-Benutzer

Verwenden Sie den Originalcode wie folgt:

from selenium import webdriver
browser = webdriver.Firefox()
driver.get("https://www.google.com")

Laden Sie dann den Treiber herunter von: mozilla / geckodriver

Platziere es in einem festen Pfad (dauerhaft). Als Beispiel habe ich es eingefügt in:

C: \ Python35

Gehen Sie dann zu den Umgebungsvariablen des Systems, suchen Sie im Raster "Systemvariablen" nach der Pfadvariablen und fügen Sie hinzu:

; C: \ Python35 \ geckodriver

geckodriver, nicht geckodriver.exe .

Ghanem
quelle
geckodriver, nicht geckodriver.exe.
Saurabh Chandra Patel
1

Auf Raspberry Pi musste ich aus dem ARM-Treiber erstellen und den Geckodriver und den Anmeldepfad festlegen:

sudo nano /usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/webdriver.py

def __init__(self, firefox_profile=None, firefox_binary=None,
             timeout=30, capabilities=None, proxy=None,
             executable_path="/PATH/gecko/geckodriver",                     
firefox_options=None,
             log_path="/PATH/geckodriver.log"):
Nathan Gisvold
quelle
1

Wenn Sie die virtuelle Umgebung und win10 verwenden (möglicherweise für andere Systeme), müssen Sie nur geckodriver.exe in den folgenden Ordner in Ihrem Verzeichnis der virtuellen Umgebung legen:

... \ my_virtual_env_directory \ Scripts \ geckodriver.exe

ein Haustier
quelle
1
from webdriverdownloader import GeckoDriverDownloader # vs ChromeDriverDownloader vs OperaChromiumDriverDownloader
gdd = GeckoDriverDownloader()
gdd.download_and_install()
#gdd.download_and_install("v0.19.0")

Dadurch erhalten Sie den Pfad zu Ihrer gekodriver.exe unter Windows

from selenium import webdriver
driver = webdriver.Firefox(executable_path=r'C:\\Users\\username\\\bin\\geckodriver.exe')
driver.get('https://www.amazon.com/')
Vor dem Gesetz
quelle
0

Mac 10.12.1 Python 2.7.10 diese Arbeit für mich :)

def download(url):
firefox_capabilities = DesiredCapabilities.FIREFOX
firefox_capabilities['marionette'] = True
browser = webdriver.Firefox(capabilities=firefox_capabilities,
                            executable_path=r'/Users/Do01/Documents/crawler-env/geckodriver')
browser.get(url)
return browser.page_source
do01
quelle
0

Ich benutze Windows 10 und Anaconda2. Ich habe versucht, die Systempfadvariable festzulegen, aber es hat nicht funktioniert. Dann habe ich einfach die Datei geckodriver.exe zum Ordner Anaconda2 / Scripts hinzugefügt und jetzt funktioniert alles hervorragend. Für mich war der Weg:

C: \ Benutzer \ Bhavya \ Anaconda2 \ Skripte

Bhavya Ghai
quelle
0

Wenn Sie die Treiberpfade unter Windows 10 hinzufügen möchten:

  1. Klicken Sie mit der rechten Maustaste auf das Symbol "Dieser PC" und wählen Sie "Eigenschaften". Geben Sie hier die Bildbeschreibung ein

  2. Klicken Sie auf "Erweiterte Systemeinstellungen".

  3. Klicken Sie unten auf dem Bildschirm auf "Umgebungsvariablen"
  4. Markieren Sie im Abschnitt "Benutzervariablen" "Pfad" und klicken Sie auf "Bearbeiten".
  5. Fügen Sie die Pfade zu Ihren Variablen hinzu, indem Sie auf "Neu" klicken und den Pfad für den Treiber eingeben, den Sie hinzufügen, und die Eingabetaste drücken.
  6. Wenn Sie den Pfad eingegeben haben, klicken Sie auf "OK".
  7. Klicken Sie so lange auf "OK", bis Sie alle Bildschirme geschlossen haben
Russ Thomas
quelle
0

Besuchen Sie den Gecko-Fahrer Die URL für den Gecko-Treiber finden Sie im Abschnitt Downloads.

Klonen Sie dieses Repo https://github.com/jackton1/script_install.git

cd script_install

Lauf

./installer --gecko-driver https://github.com/mozilla/geckodriver/releases/download/v0.18.0/geckodriver-v0.25.0-linux64.tar.gz
Jackotonye
quelle
0
  1. Stellen Sie sicher, dass Sie die richtige Version des Treibers (Geckodriver) x86 oder 64 haben.
  2. Stellen Sie sicher, dass Sie die richtige Umgebung überprüfen, z. B. wird der Job in einem Docker ausgeführt, während das Umgebungsnetzwerk als Host-Betriebssystem überprüft wird
Wen
quelle
0

Für mich war es genug, nur Geckodriver in derselben Umgebung zu installieren:

$ brew install geckodriver

und der Code wurde nicht geändert:

from selenium import webdriver
browser = webdriver.Firefox()
Olesya M.
quelle
0

Um meine 5 Cent hinzuzufügen, ist es auch möglich, echo PATH(Linux) zu tun und Geckodriver einfach in den Ordner zu verschieben, den Sie mögen. Wenn ein Systemordner (keine virtuelle Umgebung) das Ziel ist, kann global auf den Treiber zugegriffen werden.

Aramakus
quelle