Le sélénium aide de Python - Geckodriver exécutable doit être dans le CHEMIN d'accès
Je suis nouveau en programmation et a commencé avec Python
environ 2 mois et je suis aller sur Sweigart de Automatiser les Trucs Ennuyeux avec Python texte. Je suis en utilisant le RALENTI et déjà installé le sélénium module et le navigateur Firefox.
Chaque fois que j'ai essayé d'exécuter le webdriver fonction, 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 j'ai besoin de définir le chemin d'accès pour geckodriver
mais vous ne savez pas comment faire, si quelqu'un peut me dire comment faire?
- S'il vous plaît, voir ma réponse sur la question similaire, ici
- Je suis en train de mettre la geckodriver.exe en Python/Python35 répertoire elle a donc le même chemin et je me fais encore plus de problèmes.
- Sur Mac:
brew install geckodriver
- J'ai trouvé que la course à travers le navigateur google Chrome est un peu plus rapide que sur Firefox, il vous suffit de télécharger le
chromedriver
pour cela. - Remarque: il y a Testcafe qui a obtenu open-source récemment. Il ne nécessite pas de plug-ins de navigateur, ils sont conçus. Je voulais utiliser le Sélénium, mais qui ressemble à une alternative intéressante.
- découvrez lien suivant pour solution
Vous devez vous connecter pour publier un commentaire.
Tout d'abord, vous devez télécharger la dernière exécutable geckodriver d'ici à exécuter les plus récentes de firefox à l'aide de sélénium
Fait Le Sélénium client liaisons tente de localiser le
geckodriver
exécutable à partir du systèmePATH
. Vous aurez besoin d'ajouter le répertoire contenant le fichier exécutable pour le chemin d'accès système.Sur les systèmes Unix, vous pouvez les ajouter à votre système de chemin de recherche de l', si vous utilisez un bash-compatible coque:
Sur Windows, vous devrez mettre à jour le variable système Path pour ajouter le chemin complet du répertoire de l'exécutable geckodriver manuellement ou ligne de commande(n'oubliez pas de redémarrer votre système après l'ajout de l'exécutable geckodriver dans le CHEMIN d'accès du système de prise d'effet). Le principe est le même que sur Unix.
Vous pouvez maintenant exécuter votre code de même que vous êtes en train de faire comme ci-dessous :-
Exception stipule clairement que vous avez installé firefox un autre endroit alors que le Sélénium est d'essayer de trouver de firefox et de le lancer à partir de l'emplacement par défaut, mais il ne pouvait pas trouver. Vous devez fournir explicitement installé firefox binaire emplacement pour le lancement de firefox comme ci-dessous :-
geckodriver.exe
sur leC:\Python\Python35\selenium
répertoire et j'ai mis le chemin comme vous l'avez décrit, mais il me donne l'erreur ci-dessous:'selenium.common.exceptions.WebDriverException: Message: Expected browser binary location, but unable to find binary in default location, no 'moz:firefoxOptions.binary' capability provided, and no binary flag set on the command line'
/usr/local/bin
PATH
dans un environnement unix. Vous pouvez définir dans le code puisque vous n'en avez pas besoin à l'échelle du système:os.environ["PATH"] += os.pathsep + 'path/to/dir/containing/geckodriver/'
Ou tout simplement de garder le geckodriver binaire dans le répertoire qui est déjà dans votre chemin:mv geckodriver /usr/local/bin
geckodriver
à partir de? Le dépôt github se compose de deux fichiers seulement...geckodriver
v018.0 à partir d'iciCela a résolu pour moi.
export PATH=$PATH:geckodriver
(il est extrait dans le Bureau). Mais cela n'a pas aide non plus. Je reçois encore des OSError[errno 8 ]selenium.common.exceptions.SessionNotCreatedException: Message: Unable to find a matching set of capabilities
executable_path
explicitement comme argument mot-clé. Aucun argument mot-clé provoque une erreur.cette étapes RÉSOLU pour moi sur ubuntu firefox 50.
Télécharger geckodriver
Copie geckodriver dans /usr/local/bin
Vous n'avez PAS besoin d'ajouter
La réponse par @saurabh résout le problème, mais n'explique pas pourquoi Automatiser les Trucs Ennuyeux avec Python ne comprend pas ces étapes.
Ceci est causé par le livre étant basé sur le sélénium 2.x et Firefox pilote de la série n'a pas besoin de le gecko pilote. Le Gecko interface du disque dur le navigateur n'était pas disponible lors de sélénium était en cours d'élaboration.
La la dernière version dans le sélénium 2.la série x est 2.53.6 (voir e.g cette réponses, pour une meilleure visibilité sur les versions).
La 2.53.6 page de la version ne parle pas de gecko à tous. Mais depuis la version 3.0.2 de la documentation explicitement les états vous devez installer le gecko pilote.
Si après une mise à niveau (ou l'installer sur un nouveau système), votre logiciel qui fonctionnait bien avant (ou sur votre ancien système) ne fonctionne plus et que vous êtes pressé, pin le sélénium version dans votre virtualenv en faisant
mais bien sûr, la solution à long terme pour le développement est la configuration d'une nouvelle virtualenv avec la dernière version de sélénium, installez le gecko pilote et de tester si tout fonctionne toujours comme prévu. Mais la version majeure bosse peut introduire d'autres changements de l'API qui ne sont pas couverts par votre livre, de sorte que vous pouvez coller avec les anciens de sélénium, jusqu'à ce que vous êtes assez confiant que vous pouvez corriger les écarts entre les selenium2 et selenium3 API vous-même.
Sur macOS avec Homebrew déjà installé, vous pouvez simplement exécuter la commande de Terminal
Car homebrew déjà fait prolonger la
PATH
il n'y a pas besoin de modifier les scripts de démarrage.Pour configurer geckodriver pour le Sélénium Python:
Il a besoin pour mettre geckodriver chemin avec FirefoxDriver comme le code ci-dessous:
Télécharger geckodriver pour votre OS convenable (à partir de https://github.com/mozilla/geckodriver/releases) -> l'Extraire dans un dossier de votre choix -> Définir correctement le chemin d'accès comme mentionné ci-dessus
Je suis à l'aide de Python 3.6.2 et Selenium WebDriver 3.4.3 dans Windows 10.
Une autre façon de mettre en place geckodriver:
i) il suffit de coller l'geckodriver.exe sous /Python/Scripts/(Dans mon cas, le dossier a été: C:\Python36\Scripts)
ii) Maintenant écrire le code simple comme ci-dessous:
Étapes pour MAC:
La solution la plus simple est de télécharger GeckoDriver et l'ajouter à votre CHEMIN d'accès système. Vous pouvez utiliser l'un des deux approches:
Méthode Courte:
1) Téléchargez et décompressez Geckodriver.
2) Mentionner le chemin tout en initiant le pilote:
Long De La Méthode:
1) Téléchargez et décompressez Geckodriver.
2) Ouvrir
.bash_profile
. Si vous n'avez pas encore créé, vous pouvez le faire en utilisant la commande:touch ~/.bash_profile
. Puis de l'ouvrir à l'aide de:open ~/.bash_profile
3), Considérant GeckoDriver fichier est présent dans votre dossier de Téléchargements, vous pouvez ajouter la ligne suivante(s) à la
.bash_profile
fichier:Par cela, vous ajoutez le chemin d'accès à GeckoDriver à votre CHEMIN d'accès Système. Cela dit le système où GeckoDriver est situé lors de l'exécution de votre Sélénium scripts.
4) Enregistrer le
.bash_profile
et le forcer à exécuter. Cette 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 Qu'il. Vous avez TERMINÉ!. Vous pouvez exécuter le script Python maintenant.
geckodriver
avec Homebrew:brew install geckodriver
, puis de lancer Firefox via:driver = webdriver.Firefox(executable_path="/usr/local/bin/geckodriver")
Si vous utilisez Anaconda, tout ce que vous avez à faire est d'activer votre environnement virtuel et ensuite installer geckodriver à l'aide de la suite de commande:
Quelques entrées supplémentaires ou de précisions pour les futurs lecteurs de ce fil:
La suivante suffit que d'une résolution de Windows 7, Python 3.6, le sélénium 3.11:
@dsalaj note de ce fil plus tôt pour Unix est applicable à Windows ainsi; de bricoler le CHEMIN env. variable au niveau de Windows et redémarrez le système Windows peuvent être évités.
(1) Télécharger geckodriver (comme décrit dans ce fil de discussion antérieure) et placez le (décompressé) geckdriver.exe au X:\Folder\of\your\choice
(2) du code Python échantillon:
Notes:
(1) Il peut prendre environ 10 secondes pour que le code ci-dessus pour ouvrir le navigateur Firefox pour l'url spécifiée.
(2) Le python console devrait afficher le message d'erreur suivant si il n'y a pas de serveur déjà en cours d'exécution à l'url spécifiée ou de servir une page avec le titre contenant la chaîne de caractères 'Django':
le sélénium.commun.des exceptions.WebDriverException: Message: Atteint page d'erreur: about:neterror?e=connectionFailure&u=http%3A//localhost%3A8000/&c=UTF-8&f=regular&d=Firefox%20can%E2%80%9
Le moyen le plus facile pour windows!
Télécharger la dernière version de
geckodriver
de ici. Ajouter le geckodriver.exe fichier dans le répertoire python (ou tout autre répertoire qui déjà dansPATH
). Ceci devrait résoudre le problème (Testé sur Windows 10)En fait, j'ai découvert que vous pouvez utiliser la dernière geckodriver avec de le mettre dans le chemin d'accès système. Actuellement, je suis en utilisant
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
Je suis à court d'un VirtualEnv (qui, je le gérer à l'aide de PyCharm, je suppose qu'il utilise Pip pour tout installer)
Dans le code suivant, je peux utiliser un chemin d'accès spécifique pour les geckodriver à l'aide de la executable_path paramater (j'ai découvert cela en ayant un coup d'oeil dans
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 de la webdriver est importante, c'est pourquoi la executable_path est le dernier dans mon code (2e de la dernière ligne de l'extrême droite)
Vous pouvez également remarquer-je utiliser un personnalisé firefox Profil d'obtenir autour de la sec_error_unknown_issuer problème que vous rencontrerez si le site que vous effectuez le test a un certificat non approuvé. voir Comment faire pour désactiver Firefox est non fiable de connexion avertissement l'utilisation du Sélénium?
Après enquête, il a été constaté que la Marionnette pilote est incomplète et toujours en cours, et aucun montant de la définition de différentes capacités ou des options de profil, de congédier ou de réglage certifcates était d'aller travailler. Donc, c'était juste plus facile d'utiliser un profil personnalisé.
De toute façon, voici le code sur la façon dont j'ai obtenu le geckodriver de travailler sans être dans le chemin d'accès:
Je suis à l'aide de Windows 10 et cela a fonctionné pour moi:
Il est vraiment plutôt triste qu'aucun des livres publiés sur le Sélénium/Python et la plupart des commentaires sur cette question par le biais de Google de ne pas expliquer clairement le cheminement logique de l'installer sur Mac (tout est Windows!!!!). La ses youtubes tous ramassage à "l'après" vous avez le cheminement de l'installation (dans mon esprit, le bon chemin!). Donc, pour vous merveilleux les utilisateurs de Mac, utilisez la commande suivante pour modifier votre bash chemin d'accès des fichiers:
>$touch ~/.bash_profile; ouvrir ~/.bash_profile
Puis ajouter un chemin d'accès à quelque chose comme cela....
*# Paramètre de CHEMIN pour geckodriver
PATH=“/usr/bin/geckodriver:${PATH}”
CHEMIN d'exportation
Paramètre de CHEMIN pour le Sélénium firefox
PATH=“~/Users/yourNamePATH/VEnvPythonInterpreter/lib/python2.7/site-packages/selenium/webdriver/firefox/:${PATH}”
CHEMIN d'exportation
Paramètre de CHEMIN pour le fichier exécutable sur firefox pilote
PATH=“/Users/yournamePATH/VEnvPythonInterpreter/lib/python2.7/site-packages/selenium/webdriver/common/service.py:${PATH}”
CHEMIN d'exportation*
Cela a fonctionné pour moi. Mon souci c'est que quand le Sélénium Windows communauté commencer à jouer le jeu réel et à nous inclure les utilisateurs de Mac dans leur arrogante membres du club.
Sélénium répond à cette question dans leur DESCRIPTION.tvd
Fondamentalement, il suffit de télécharger le geckodriver, décompressez-le et déplacez le fichier exécutable de votre dossier /usr/bin
utiliser le code d'origine comme il est:
puis téléchargez le pilote à partir de: mozilla/geckodriver
Le placer dans un chemin fixe (de façon permanente).. par exemple, je l'ai mis dans:
Puis aller pour les variables d'environnement du système, dans la grille de "variables Système" regardez pour la variable de Chemin d'accès et d'ajouter:
geckodriver, pas geckodriver.exe.
Ubuntu et plus nouvelle version de geckodriver
Mac gestion 10.12.1 python 2.7.10
ce travail pour moi 🙂
Sur Raspberry Pi, j'ai dû créer de BRAS du pilote et de l'ensemble de la geckodriver et le chemin du fichier journal dans:
sudo nano /usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/webdriver.py
Visite Gecko Pilote obtenir la url pour le gecko pilote à partir de la section Téléchargements.
Clone de ce repo https://github.com/jackton1/script_install.git
cd script_install
Exécuter
./installer --gecko-driver url_to_gecko_driver
Je suis avec Windows 10 et Anaconda2. J'ai essayé système de réglage variable de chemin d'accès, mais n'a pas fonctionné. Ensuite, j'ai simplement ajouté geckodriver.exe fichier Anaconda2 dossier/Scripts et tout fonctionne très bien maintenant.
Pour moi, le chemin d'accès est:-
C:\Users\Bhavya\Anaconda2\Scripts
Si vous souhaitez ajouter les chemins d'accès aux pilotes sur windows 10:
Clic droit sur "Ce PC", l'icône et sélectionnez "Propriétés"
Cliquez sur “Paramètres Système Avancés”