Je débute dans la programmation et ai commencé à utiliser Python il y a environ 2 mois. Je reviens sur Automatiser l'ennui avec le texte Python de Sweigart. J'utilise Spyder 3 et j'ai déjà installé le module Selenium et le navigateur Firefox. J'ai utilisé le code suivant dans un fichier python
from Selenium import webdriver
browser = webdriver.Firefox()
browser.get('http://inventwithpython.com')
Je reçois cette erreur:
Message: 'geckodriver' executable needs to be in PATH.
J'ai téléchargé geckodriver.exe en plus d'aller dans le terminal et de l'installer en utilisant
brew install geckodriver
Curieusement, si je vais dans le terminal et que je tape "python" puis que je mets le code, cela fonctionne, mais pas lorsque je lance le fichier dans Spyder. Où dois-je placer le fichier geckodriver.exe pour que cela fonctionne? J'ai essayé de le placer dans différents dossiers (le même dossier que le fichier python, le même dossier que le fichier webdriver, dans le répertoire utilisateur, etc.), mais le même message d'erreur s'affiche.
J'ai examiné des questions similaires mais je n'arrive pas à trouver quelque chose qui fonctionne. J'ai aussi essayé avec Chrome mais j'obtiens la même erreur mais avec chromedriver.
which geckodriver
rendements /usr/local/bin/geckodriver
Je suis aussi sur Mac, donc les chemins de fichiers sont un peu plus difficiles pour moi que sous Windows.
RESOLU: J'ai placé l'exécutable geckodriver dans/Users/sethkillian/anaconda/bin et maintenant, il fonctionne à partir de Spyder sans problème. Merci pour l'aide!
Téléchargez le geckodriver et placez-le dans /usr/local/bin; puis utilisez webdriver.Firefox comme ceci:
from Selenium import webdriver
driver = webdriver.Firefox(executable_path = '/usr/local/bin/geckodriver')
Peut-être que quelqu'un peut expliquer pourquoi le chemin n'a pas été trouvé. Et j'espère aussi que cela aidera quelqu'un d'autre à résoudre ses propres problèmes de chemin.
Vous pouvez certainement placer l'exécutable geckodriver où bon vous semble. Sur mon Mac, j’ai choisi ~/.local/bin car c’est un emplacement commun pour le stockage des fichiers exécutables spécifiques à un compte utilisateur. Par exemple. le CLI Heroku est placé dans ~/.local/share. Cette approche élimine également le besoin d’un accès superutilisateur lors de l’ajout d’un fichier exécutable à un emplacement système tel que/usr/local/bin
Je l'ai ensuite ajouté au chemin dans mon .profile avec
EXPORT PATH=$PATH:~/.local/bin
J'ai testé en ouvrant un terminal et en vérifiant avec:
geckodriver --version
qui a bien fonctionné.
Mais pour un environnement virtuel Python, pour une raison quelconque, le chemin système n’est pas transmis ?? J'ai découvert cela en ajoutant à mon script de test Selenium:
import sys
for p in sys.path:
print(p)
Ce qui a montré:
/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
Donc finalement, je devais spécifier le chemin avec:
self.browser = webdriver.Firefox(executable_path=r'/Users/philip/.local/bin/geckodriver')
Cette approche fonctionne bien, mais j'aimerais quand même savoir pourquoi je ne pouvais pas définir le chemin dans l'environnement virtuel.