Selenium utilisant Python - l'exécutable Geckodriver doit être dans PATH

435

Je suis nouveau dans la programmation et j'ai commencé il y a Pythonenviron 2 mois et je passe en revue Automate the Boring Stuff avec du texte Python de Sweigart . J'utilise IDLE et j'ai déjà installé le module sélénium et le navigateur Firefox. Chaque fois que j'ai essayé d'exécuter la fonction de pilote Web, j'obtiens ceci:

from selenium import webdriver
browser = webdriver.Firefox()

Exception: -

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. 

Je pense que je dois définir le chemin d'accès, geckodrivermais je ne sais pas comment, alors quelqu'un peut-il me dire comment procéder?

tadm123
la source
2
S'il vous plaît, voir ma réponse sur une question similaire ici
Andrew
Je place le geckodriver.exe dans le répertoire Python / Python35 afin qu'il ait le même chemin et j'obtiens encore plus de problèmes.
tadm123
81
Sur Mac:brew install geckodriver
Nostalg.io
1
J'ai trouvé que l'exécuter via le navigateur Chrome est un peu plus rapide que sur Firefox, vous n'aurez qu'à télécharger le chromedriverpour cela.
tadm123
Remarque: il y a Testcafe qui a été open-source récemment. Il ne nécessite aucun plugin de navigateur, ils sont intégrés. Je voulais utiliser Selenium mais cela ressemble à une alternative intéressante.
Ehvince

Réponses:

355

selenium.common.exceptions.WebDriverException: Message: l'exécutable 'geckodriver' doit être dans PATH.

Tout d'abord, vous devrez télécharger le dernier geckodriver exécutable d'ici pour exécuter le dernier firefox en utilisant le sélénium

En fait, les liaisons client Selenium essaient de localiser l' geckodriverexécutable du système PATH. Vous devrez ajouter le répertoire contenant l'exécutable au chemin système.

  • Sur les systèmes Unix, vous pouvez faire ce qui suit pour l'ajouter au chemin de recherche de votre système, si vous utilisez un shell compatible bash:

    export PATH=$PATH:/path/to/directory/of/executable/downloaded/in/previous/step
  • Sous Windows, vous devrez mettre à jour la variable système Path pour ajouter le chemin de répertoire complet au geckodriver exécutable manuellement ou en ligne de commande (n'oubliez pas de redémarrer votre système après avoir ajouté le geckodriver exécutable dans le système PATH pour prendre effet) . Le principe est le même que sur Unix.

Maintenant, vous pouvez exécuter votre code de la même manière que ci-dessous: -

from selenium import webdriver

browser = webdriver.Firefox()

selenium.common.exceptions.WebDriverException: Message: emplacement binaire du navigateur attendu, mais impossible de trouver le binaire à l'emplacement par défaut, aucune capacité «moz: firefoxOptions.binary» fournie et aucun indicateur binaire défini sur la ligne de commande

L'exception indique clairement que vous avez installé Firefox dans un autre emplacement tandis que Selenium essaie de trouver Firefox et de le lancer à partir de l'emplacement par défaut, mais il ne l'a pas trouvé. Vous devez fournir explicitement l'emplacement binaire installé par Firefox pour lancer Firefox comme ci-dessous: -

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
la source
8
Merci mais j'ai mis le mon geckodriver.exesur le C:\Python\Python35\seleniumrépertoire et j'ai mis le chemin comme vous l'avez décrit mais ça me donne l'erreur ci-dessous:
tadm123
4
Merci @Saurabh Gaur, cela fonctionne maintenant. J'ai ajouté le chemin de Firefox aux variables système manuellement et tout fonctionne. Le lancement prend un peu de temps mais je suppose que c'est normal. Merci!
tadm123
3
J'ai reçu l'erreur "WebDriverException: Message: Impossible de démarrer le navigateur: autorisation refusée" au début lorsque j'ai commencé à spécifier le chemin binaire de Firefox, mais le redémarrage de l'ordinateur (Windows 10) a résolu le problème. - Juste au cas où quelqu'un d'autre toucherait le même problème que moi.
NoSuchElephantException
3
Qu'est-ce que le binaire? Est-ce à dire exécutable?
Utilisateur
12
En plus de cette réponse, je voudrais développer la configuration de l' PATHenvironnement in unix. Vous pouvez le définir dans le code car vous n'en avez pas besoin à l'échelle du système: os.environ["PATH"] += os.pathsep + 'path/to/dir/containing/geckodriver/' Ou simplement conserver le binaire geckodriver dans le répertoire qui se trouve déjà sur votre chemin:mv geckodriver /usr/local/bin
dsalaj
161

Cela l'a résolu pour moi.

from selenium import webdriver
driver = webdriver.Firefox(executable_path=r'your\path\geckodriver.exe')
driver.get('http://inventwithpython.com')
Nesa
la source
Si vous obtenez une autorisation erronée, essayez de supprimer [r '] du chemin juste "excecutable_path =' chemin \ vers \ votre'diretoire '"
Darius
@adityarawat sur quel système d'exploitation êtes-vous?
Nesa
mais maintenant je reçois OSError au lieu de mauvaises autorisations. J'ai réussi à copier geckodriver dans / usr / local / bin. mais maintenant cette nouvelle erreur me tue
aditya rawat
@adityarawat vous pouvez télécharger geckodriver indépendamment d'ici: github.com/mozilla/geckodriver/releases l' extraire avec tar et le rendre exécutable avec chmod + x, il n'a pas besoin d'être dans / usr / local / bin, vous avez juste pour spécifier votre chemin vers elle
Nesa
juste pour être clair, j'ai téléchargé le fichier arm7hf.tar et je l'ai également extrait et ajouté au chemin à l'aide de la commande export PATH=$PATH:geckodriver(il est extrait dans Desktop). Mais cela n'a pas aidé non plus. Je reçois toujours OSError [errno 8]
aditya rawat
122

cela a résolu pour moi sur Ubuntu Firefox 50.

  1. Télécharger geckodriver

  2. Copiez geckodriver dans / usr / local / bin

Vous n'avez PAS besoin d'ajouter

firefox_capabilities = DesiredCapabilities.FIREFOX
firefox_capabilities['marionette'] = True
firefox_capabilities['binary'] = '/usr/bin/firefox'
browser = webdriver.Firefox(capabilities=firefox_capabilities)
Andrea Perdicchia
la source
Dans votre code, vous ne pouvez pas ajouter la variable de capacité
Andrea Perdicchia
Souhaitez-vous savoir comment définir le répertoire de téléchargement pour Firefox? J'ai ajouté la question suivante Définir les préférences de Firefox . Toute aide serait très appréciée.
d84_n1nj4
Dans Debian ou Ubuntu, vous devez utiliser la commande apt pour installer Firefox. Pour Windows, je n'ai aucune idée, désolé
Andrea Perdicchia
Merci. Après avoir appliqué cette réponse, j'ai pris cette solution pour gérer un problème de suivi: stackoverflow.com/questions/43713445/…
HackNone
Merci, Pycharm n'a pas trouvé de geckodriver bien qu'il soit à la maison et dans le dossier du projet lui-même, mais après l'avoir déplacé vers / usr / local / bin, cela a parfaitement fonctionné
Ronald Das
32

La réponse de @saurabh résout le problème, mais n'explique pas pourquoi Automate the Boring Stuff with Python n'inclut pas ces étapes.

Cela est dû au fait que le livre est basé sur le sélénium 2.x et le pilote Firefox pour cette série n'a pas besoin du pilote gecko. L'interface Gecko pour piloter le navigateur n'était pas disponible lors du développement du sélénium.

La dernière version de la série selenium 2.x est 2.53.6 (voir par exemple ces réponses , pour une vue plus facile des versions).

La page de version 2.53.6 ne mentionne pas du tout gecko. Mais depuis la version 3.0.2, la documentation indique explicitement que vous devez installer le pilote gecko.

Si après une mise à niveau (ou une installation sur un nouveau système), votre logiciel qui fonctionnait bien avant (ou sur votre ancien système) ne fonctionne plus et vous êtes pressé, épinglez la version sélénium dans votre virtualenv en faisant

pip install selenium==2.53.6

mais bien sûr, la solution à long terme pour le développement consiste à configurer un nouveau virtualenv avec la dernière version de sélénium, installer le pilote gecko et tester si tout fonctionne toujours comme prévu. Mais le bump de la version principale peut introduire d'autres changements d'API qui ne sont pas couverts par votre livre, vous pouvez donc vouloir vous en tenir à l'ancien sélénium, jusqu'à ce que vous soyez suffisamment confiant pour pouvoir corriger vous-même les écarts entre l'API selenium2 et selenium3.

Anthon
la source
2
je souhaite que ce soit la meilleure réponse
sudo-nim
1
cela m'a aidé, merci Anthon
ghost21blade
25

Sur macOS avec Homebrew déjà installé, vous pouvez simplement exécuter la commande Terminal

$ brew install geckodriver

Parce que homebrew a déjà étendu le, PATHil n'est pas nécessaire de modifier les scripts de démarrage.

roskakori
la source
@roskakori J'ai fait cela et il a été installé avec succès, mais je reçois toujours la même erreur
JKC
Cela l'a fait pour moi, merci. En utilisant Firefox 72.0.2 et Sélénium 3.141.0
Sam
17

Pour configurer geckodriver pour Selenium Python:

Il doit définir le chemin geckodriver avec FirefoxDriver comme le code ci-dessous:

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

Téléchargez geckodriver pour votre système d'exploitation approprié (depuis https://github.com/mozilla/geckodriver/releases ) -> Extrayez-le dans un dossier de votre choix -> Définissez le chemin correctement comme mentionné ci-dessus

J'utilise Python 3.6.2 et Selenium WebDriver 3.4.3 dans Windows 10.

Une autre façon de configurer geckodriver:

i) Collez simplement le geckodriver.exe sous / Python / Scripts / (Dans mon cas, le dossier était: C: \ Python36 \ Scripts)
ii) Maintenant, écrivez le code simple comme ci-dessous:

self.driver = webdriver.Firefox()
Ripon Al Wasim
la source
17

Si vous utilisez Anaconda , il vous suffit d'activer votre environnement virtuel puis d'installer geckodriver à l'aide de la commande suivante :

    conda install -c conda-forge geckodriver
Rodolfo Alvarez
la source
Oui, il installe geckodriver, mais l'erreur pycharm reste la même.
WebComer
Salut, j'ai essayé beaucoup de choses et c'est la seule chose qui a fonctionné pour moi :-) merci
tezzaaa
12

Ubuntu 18.04+ et dernière version de geckodriver

Cela devrait également fonctionner pour d'autres variétés * nix.

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/

Pour la mise à jour mac vers:

geckodriver-$GV-macos.tar.gz
jmunsch
la source
12

Je vois que les discussions parlent toujours de l'ancienne façon de configurer geckodriver en téléchargeant le binaire et en configurant le chemin manuellement.

Cela peut être fait automatiquement en utilisant webdriver-manager

pip install webdriver-manager

Maintenant, le code ci-dessus dans la question fonctionnera simplement avec le changement ci-dessous,

from selenium import webdriver
from webdriver_manager.firefox import GeckoDriverManager

driver = webdriver.Firefox(executable_path=GeckoDriverManager().install())
Navarasu
la source
2
Cela a fonctionné pour moi. Merci!
igorkf
Est-ce que Safari ou même Internet Explorer ont un gestionnaire de pilotes similaire?
Mischief_Monkey
11

Le moyen le plus simple pour Windows!
Téléchargez la dernière version geckodriverd' ici . Ajoutez le fichier geckodriver.exe au répertoire python (ou à tout autre répertoire déjà présentPATH ). Cela devrait résoudre le problème (testé sur Windows 10)

Jalles10
la source
Windows n'est pas le pire. Merci pour la solution rapide.
AJ_
C'est de loin la solution la plus simple !! Plus besoin de redémarrer votre ordinateur!
olenscki
8

Étapes pour MAC:

La solution simple consiste à télécharger GeckoDriver et à l'ajouter à votre système PATH. Vous pouvez utiliser l'une des deux approches:

Méthode courte:

1) Téléchargez et décompressez Geckodriver .

2) Mentionnez le chemin lors du lancement du pilote:

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

Méthode longue:

1) Téléchargez et décompressez Geckodriver .

2) Ouvrez .bash_profile. Si vous ne l' avez pas encore créé, vous pouvez le faire en utilisant la commande: touch ~/.bash_profile. Ouvrez-le ensuite en utilisant:open ~/.bash_profile

3) Étant donné que le fichier GeckoDriver est présent dans votre dossier Téléchargements, vous pouvez ajouter la ou les lignes suivantes au .bash_profilefichier:

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

Par cela, vous ajoutez le chemin d'accès à GeckoDriver à votre chemin système. Cela indique au système où se trouve GeckoDriver lors de l'exécution de vos scripts Selenium.

4) Enregistrez le .bash_profileet forcez-le à s'exécuter. Cela charge les valeurs immédiatement sans avoir à redémarrer. Pour ce faire, vous pouvez exécuter la commande suivante:

source ~/.bash_profile

5) C'est tout. Vous avez terminé!. Vous pouvez maintenant exécuter le script Python.

Umang Sardesai
la source
1
J'ai pu télécharger geckodriveravec Homebrew: brew install geckodriverpuis lancer Firefox via:driver = webdriver.Firefox(executable_path="/usr/local/bin/geckodriver")
Winterflags
7

Quelques entrées / clarifications supplémentaires pour les futurs lecteurs de ce fil:

La résolution suivante suffit pour Windows 7, Python 3.6, sélénium 3.11:

La note de @ dsalaj dans ce fil plus tôt pour Unix s'applique également à Windows; bricoler avec le PATH env. variable au niveau Windows et le redémarrage du système Windows peuvent être évités.

(1) Téléchargez geckodriver (comme décrit dans ce fil plus tôt) et placez le geckdriver.exe (décompressé) dans X: \ Folder \ of \ your \ choice

(2) Exemple de code Python:

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

Remarques: (1) Le code ci-dessus peut prendre environ 10 secondes pour ouvrir le navigateur Firefox pour l'URL spécifiée.
(2) La console python afficherait l'erreur suivante s'il n'y a pas de serveur déjà en cours d'exécution à l'URL spécifiée ou servant une page avec le titre contenant la chaîne 'Django': selenium.common.exceptions.WebDriverException: Message: page d'erreur atteinte: à propos de : neterror? e = connectionFailure & u = http% 3A // localhost% 3A8000 / & c = UTF-8 & f = regular & d = Firefox% 20can% E2% 80% 9

Snidhi Sofpro
la source
Merci, j'ai essayé toutes les autres solutions mais seule la vôtre a fonctionné sur mon Windows!
pso
4

J'ai découvert que vous pouvez utiliser le dernier geckodriver sans le mettre dans le chemin système. Actuellement j'utilise

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

Firefox 50.1.0

Python 3.5.2

Sélénium 3.0.2

Windows 10

J'utilise un VirtualEnv (que je gère à l'aide de PyCharm, je suppose qu'il utilise Pip pour tout installer)

Dans le code suivant, je peux utiliser un chemin spécifique pour le geckodriver en utilisant le paramètre exécutable_path (je l'ai découvert en consultant Lib \ site-packages \ selenium \ webdriver \ firefox \ webdriver.py). Remarque J'ai un soupçon que l'ordre des arguments des paramètres lors de l'appel du webdriver est important, c'est pourquoi le chemin_exécutable est le dernier dans mon code (2ème dernière ligne à l'extrême droite)

Vous pouvez également remarquer que j'utilise un profil Firefox personnalisé pour contourner le problème sec_error_unknown_issuer que vous rencontrerez si le site que vous testez possède un certificat non approuvé. voir Comment désactiver l'avertissement de connexion non fiable de Firefox à l'aide de Selenium?

Après enquête, il a été constaté que le pilote de la marionnette est incomplet et toujours en cours, et aucune quantité de définition de diverses capacités ou options de profil pour le rejet ou la définition de certificats n'allait fonctionner. Il était donc plus facile d'utiliser un profil personnalisé.

Quoi qu'il en soit, voici le code sur la façon dont j'ai fait fonctionner le geckodriver sans être sur le chemin:

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
la source
J'ai eu SyntaxError: (erreur unicode) le codec 'unicodeescape' ne peut pas décoder les octets ... Et je dois changer le chemin gecko en epath = r'C: \ Users \ step_ \ Documents \ mtg_buyer \ geckodrivers \ geckodriver.exe '. Peut-être que la raison en est que j'utilise un Windows 10 chinois?
Endle_Zhenbo
3

J'utilise Windows 10 et cela a fonctionné pour moi:

  1. Téléchargez geckodriver d' ici . Téléchargez la bonne version pour l'ordinateur que vous utilisez
  2. Décompressez le fichier que vous venez de télécharger et coupez / copiez le fichier ".exe" qu'il contient
  3. Accédez à C: {votre dossier racine python}. Le mien était C: \ Python27. Collez le fichier geckodriver.exe dans ce dossier.
  4. Redémarrez votre environnement de développement.
  5. Essayez d'exécuter à nouveau le code, il devrait fonctionner maintenant.
Edgar N
la source
Merci d'avoir mentionné que vous devez redémarrer votre environnement de développement.
Deep
3

Pensez à installer un Firefox conteneurisé:

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

Connectez-vous en utilisant 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
la source
2

C'est vraiment assez triste qu'aucun des livres publiés sur Selenium / Python et la plupart des commentaires sur ce problème via Google n'expliquent clairement la logique de cheminement pour configurer cela sur Mac (tout est Windows !!!!). Les youtubes sont tous ramassés à l '"après", vous avez la configuration de cheminement (dans mon esprit, la sortie bon marché!). Donc, pour vous, merveilleux utilisateurs de Mac, utilisez ce qui suit pour modifier vos fichiers de chemin bash:

> $ touch ~ / .bash_profile; ouvrir ~ / .bash_profile

Ensuite, ajoutez un chemin d'accès quelque chose comme ceci .... * # Définition de PATH pour geckodriver PATH = "/ usr / bin / geckodriver: $ {PATH}" export PATH

Configuration de PATH pour Selenium firefox

PATH = "~ / Users / yourNamePATH / VEnvPythonInterpreter / lib / python2.7 / site-packages / selenium / webdriver / firefox /: $ {PATH}" PATH d'exportation

Configuration de PATH pour l'exécutable sur le pilote Firefox

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

Cela a fonctionné pour moi. Ma préoccupation est quand la communauté Selenium Windows commencera-t-elle à jouer au vrai jeu et nous inclura-t-elle les utilisateurs Mac dans son arrogant club.

JustASteve
la source
2

Selenium répond à cette question dans leur DESCRIPTION.

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.

Fondamentalement, il suffit de télécharger le geckodriver, de le déballer et de déplacer l'exécutable dans votre dossier / usr / bin

Peter Graham
la source
Cette citation contient les instructions qui ont fonctionné sur Linux Mint 18.
Elliot Robert
2

Pour les utilisateurs de Windows

utilisez le code d'origine car il est:

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

puis téléchargez le pilote depuis: mozilla / geckodriver

Placez-le dans un chemin fixe (en permanence) .. à titre d'exemple, je le mets dans:

C: \ Python35

Allez ensuite dans les variables d'environnement du système, dans la grille des "Variables système" recherchez la variable Path et ajoutez:

; C: \ Python35 \ geckodriver

geckodriver, pas geckodriver.exe .

Ghanem
la source
geckodriver, pas geckodriver.exe.
Saurabh Chandra Patel
1

Sur Raspberry Pi, j'ai dû créer à partir du pilote ARM et définir le geckodriver et le chemin de connexion dans:

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
la source
1

Si vous utilisez un environnement virtuel et win10 (c'est peut-être le cas pour d'autres systèmes), il vous suffit de placer geckodriver.exe dans le dossier suivant de votre répertoire d'environnement virtuel:

... \ my_virtual_env_directory \ Scripts \ geckodriver.exe

un animal de compagnie
la source
1
from webdriverdownloader import GeckoDriverDownloader # vs ChromeDriverDownloader vs OperaChromiumDriverDownloader
gdd = GeckoDriverDownloader()
gdd.download_and_install()
#gdd.download_and_install("v0.19.0")

cela vous donnera le chemin vers votre gekodriver.exe sur Windows

from selenium import webdriver
driver = webdriver.Firefox(executable_path=r'C:\\Users\\username\\\bin\\geckodriver.exe')
driver.get('https://www.amazon.com/')
En loi
la source
0

Mac 10.12.1 python 2.7.10 ce travail pour moi :)

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
la source
0

J'utilise Windows 10 et Anaconda2. J'ai essayé de définir la variable de chemin d'accès système, mais je n'ai pas réussi. Ensuite, j'ai simplement ajouté le fichier geckodriver.exe au dossier Anaconda2 / Scripts et tout fonctionne très bien maintenant. Pour moi, le chemin était: -

C: \ Users \ Bhavya \ Anaconda2 \ Scripts

Bhavya Ghai
la source
0

Si vous souhaitez ajouter les chemins du pilote sur Windows 10:

  1. Faites un clic droit sur l'icône "Ce PC" et sélectionnez "Propriétés" entrez la description de l'image ici

  2. Cliquez sur «Paramètres système avancés»

  3. Cliquez sur "Variables d'environnement" en bas de l'écran
  4. Dans la section "Variables utilisateur", sélectionnez "Chemin" et cliquez sur "Modifier"
  5. Ajoutez les chemins d'accès à vos variables en cliquant sur «Nouveau» et en tapant le chemin d'accès du pilote que vous ajoutez et appuyez sur Entrée.
  6. Une fois que vous avez fini d'entrer dans le chemin, cliquez sur "OK"
  7. Continuez à cliquer sur "OK" jusqu'à ce que vous ayez fermé tous les écrans
Russ Thomas
la source
0
  1. assurez-vous d'avoir la bonne version du pilote (geckodriver), x86 ou 64.
  2. assurez-vous de vérifier le bon environnement, par exemple le travail s'exécute dans un Docker, tandis que l'environnement est vérifié est le système d'exploitation hôte
Loupe
la source
0

pour moi, il suffisait juste d'installer geckodriver dans le même environnement:

$ brew install geckodriver

et le code n'a pas changé:

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

Pour ajouter mes 5 cents, il est également possible de faire echo PATH(Linux) et de simplement déplacer geckodriver dans le dossier de votre choix. Si un dossier système (pas un environnement virtuel) est la cible, le pilote devient globalement accessible.

Aramakus
la source