J'ai un script python qui fonctionnait bien auparavant mais maintenant des erreurs, donc je ne suis pas sûr de ce qui s'est passé. Je reçois l'erreur:FileNotFoundError: [WinError 2] Le système ne peut pas trouver le fichier spécifié bien que le même fichier a fonctionné précédemment
C:\Users\663255\Desktop>PMI_Tests.py
Traceback (most recent call last):
File "C:\Users\663255\AppData\Local\Programs\Python\Python36\lib\site-packages\selenium\webdriver\common\service.py", line 74, in start
stdout=self.log_file, stderr=self.log_file)
File "C:\Users\663255\AppData\Local\Programs\Python\Python36\lib\subprocess.py", line 707, in __init__
restore_signals, start_new_session)
File "C:\Users\663255\AppData\Local\Programs\Python\Python36\lib\subprocess.py", line 990, 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 "C:\Users\663255\Desktop\PMI_Tests.py", line 14, in <module>
driver = webdriver.Firefox(firefox_binary=binary, executable_path=gecko+'.exe')
File "C:\Users\663255\AppData\Local\Programs\Python\Python36\lib\site-packages\selenium\webdriver\firefox\webdriver.py", line 142, in __init__
self.service.start()
File "C:\Users\663255\AppData\Local\Programs\Python\Python36\lib\site-packages\selenium\webdriver\common\service.py", line 81, in start
os.path.basename(self.path), self.start_error_message)
selenium.common.exceptions.WebDriverException: Message: 'geckodriver.exe' executable needs to be in PATH.
Le début du fichier ressemble à:
import unittest
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import os
import time
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
from selenium.webdriver.common.action_chains import ActionChains
from urllib.request import urlopen
from html.parser import HTMLParser
gecko = os.path.normpath(os.path.join(os.path.dirname(__file__), 'geckodriver'))
binary = FirefoxBinary('C:\Program Files (x86)\Mozilla Firefox\Firefox.exe')
driver = webdriver.Firefox(firefox_binary=binary, executable_path=gecko+'.exe')
class PythonOrgSearch(unittest.TestCase):
#sets up driver to run tests
def setUp(self):
self.driver = driver
Je ne suis pas sûr pourquoi le dossier a cessé de fonctionner, car il avait déjà travaillé plusieurs fois auparavant. aussi, python et geckodriver sont définitivement définis dans le chemin, mais lorsqu'ils sont exécutés via le terminal, il est dit que geckodriver n'est pas dans le chemin. J'ai le sentiment que le problème est lié à la façon dont geckodriver (c'est-à-dire la variable gecko) est définie de façon étrange dans le code, ou quelque chose comme ça. J'ai vu d'autres messages de débordement de pile avec des problèmes similaires mais je n'ai rien trouvé qui corrige mon problème. J'utilise Python 3.6.2 si cela est utile. Toute idée serait géniale. Je vous remercie!
Si vous utilisez Windows, vous pouvez simplement ajouter le chemin du système via le chemin d'accès environnemental. J'ai le même problème. Avez-vous pu résoudre? J'utilise Anaconda dans un env virtuel. Chrome fonctionne parfaitement. Habituellement, mettre les pilotes dans un dossier Anaconda se résout habituellement mais geckodriver ne l'utilise pas pour moi. J'utilise un firefox sans tête pour les fenêtres. https://github.com/kybu/headless-selenium-for-win. Dans votre cas, il est probable que l'ajout de pilotes au répertoire Python + la mise à jour des variables d'environnement dans Windows devrait résoudre – Tetora
Je n'utilisais pas anaconda. fini par redéfinir la variable gecko en code dur c'est le chemin, qui a fini par résoudre le problème. –