it-swarm.com.de

Selen in Python unter Mac - Die ausführbare Geckodriver-Datei muss sich in PATH befinden

Ich bin neu im Programmieren und habe vor etwa 2 Monaten mit Python angefangen. Ich werde Sweigarts Automate the Boring Stuff mit Python-Text untersuchen. Ich benutze Spyder 3 und habe bereits das Selenium-Modul und den Firefox-Browser installiert. Ich habe den folgenden Code in der Python-Datei verwendet

from Selenium import webdriver
browser = webdriver.Firefox()
browser.get('http://inventwithpython.com')

Ich erhalte diesen Fehler:

Message: 'geckodriver' executable needs to be in PATH.

Ich habe geckodriver.exe zusätzlich zum Terminal heruntergeladen und es mit installiert

brew install geckodriver

Seltsamerweise, wenn ich ins Terminal gehe und "python" eingebe und dann den Code eingebe, funktioniert es, aber nicht, wenn ich die Datei in Spyder starte. Wo muss ich die Datei geckodriver.exe ablegen, damit sie funktioniert? Ich habe versucht, es in verschiedenen Ordnern abzulegen (derselbe Ordner wie die Python-Datei, der Ordner der Webdriver-Datei, in der Benutzer-Bin usw.), aber ich erhalte die gleiche Fehlermeldung 

Ich habe mir ähnliche Fragen angeschaut, kann aber scheinbar nichts finden, was funktioniert. Ich habe es auch mit Chrome ausprobiert, bekomme aber den gleichen Fehler, aber mit Chromedriver.

which geckodriver

ergibt /usr/local/bin/geckodriver

Ich bin auch auf einem Mac, daher sind Dateipfade für mich etwas schwieriger als unter Windows.

6
user4389863

Gelöst: Ich habe den Geckodriver exe in/Users/sethkillian/anaconda/bin abgelegt und jetzt funktioniert es von Spyder ohne Probleme. Danke für die Hilfe!

2
user4389863

Laden Sie den Gecko-Treiber herunter und legen Sie ihn in /usr/local/bin ; dann verwenden Sie webdriver.Firefox wie folgt:

from Selenium import webdriver
driver = webdriver.Firefox(executable_path = '/usr/local/bin/geckodriver')
12
JJon.Boat

Vielleicht kann jemand erklären, warum der Pfad nicht gefunden wird. Und ich hoffe auch, dass dies jemandem hilft, Probleme mit dem eigenen Pfad zu beheben.

Sie können den Geckodriver sicher überall dort hinstellen, wo Sie möchten. Auf meinem Mac habe ich ~/.local/bin gewählt, da es ein häufiger Ort für die Speicherung von ausführbaren Dateien ist, die für ein Benutzerkonto spezifisch sind. Zum Beispiel. Die Heroku-CLI befindet sich in ~/.local/share. Durch diesen Ansatz ist auch kein Superuser-Zugriff erforderlich, wenn eine ausführbare Datei zu einem Systemspeicherort wie/usr/local/bin hinzugefügt wird 

Ich fügte es dann dem Pfad in meinem .profile mit hinzu

    EXPORT PATH=$PATH:~/.local/bin

Ich testete, indem ich ein Terminal öffne und folgendes überprüfe:

    geckodriver --version

was gut funktioniert hat.

Aber aus einer virtuellen Python-Umgebung wird der Systempfad aus irgendeinem Grund nicht übergeben? Ich entdeckte dies, indem ich meinem Selenium-Testskript hinzufügte:

    import sys

    for p in sys.path:
        print(p)

Was zeigte:

    /Users/philip/Devel/myproject
    /Users/philip/.virtualenvs/myproject/lib/python36.Zip
    /Users/philip/.virtualenvs/myproject/lib/python3.6
    /Users/philip/.virtualenvs/myproject/lib/python3.6/lib-dynload
    /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6
    /Users/philip/.virtualenvs/myproject/lib/python3.6/site-packages

Also musste ich letztendlich den Pfad mit angeben:

    self.browser = webdriver.Firefox(executable_path=r'/Users/philip/.local/bin/geckodriver')

Dieser Ansatz funktioniert gut, aber ich würde trotzdem gerne wissen, warum ich den Pfad in der virtuellen Umgebung nicht festlegen konnte. 

0
Philip