web-dev-qa-db-fra.com

Python - Selenium dans Ubuntu OSError: [Errno 20] n'est pas un répertoire

Après avoir installé Selenium dans Ubuntu et ajouté geckodriver à path, le message d'erreur suivant s'affiche: 

from Selenium import webdriver

driver = webdriver.Firefox()

erreur:

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/dist-packages/Selenium/webdriver/firefox/webdriver.py", line 135, in __init__
self.service.start()
File "/usr/local/lib/python2.7/dist-packages/Selenium/webdriver/common/service.py", line 64, in start
stdout=self.log_file, stderr=self.log_file)
File "/usr/lib/python2.7/subprocess.py", line 710, in __init__
errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 1327, in _execute_child
raise child_exception
OSError: [Errno 20] Not a directory

Que se passe-t-il?

EDIT: résolu en utilisant chromedriver au lieu de geckodriver.

17
User

Avait le même problème. Il y avait deux façons de résoudre ce problème pour moi:

Ajoutez executable_path arg dans webdriver:

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

Et la deuxième façon consiste à ajouter un dossier contenant geckodriver à l'aide de l'exportation (uniquement le dossier, pas geckodriver):

$ export PATH=$PATH:/path/to/
31
Poloq

Outre la réponse de @Poloq, le moyen le plus simple serait de conserver votre binaire geckodriver dans un répertoire qui se trouve déjà dans votre PATH.

mv geckodriver /usr/local/bin

De cette façon, vous pouvez éviter des paramètres/configurations supplémentaires dans votre projet, avec l'inconvénient d'avoir une étape supplémentaire lors du déploiement sur différents systèmes.

3
dsalaj

Le problème est que vous avez renommé "geckodriver" en "wire".

La solution consiste à ajouter "geckodriver" au chemin de recherche, cela devrait alors fonctionner.

1
Kamil W.

Outre les réponses fournies, il existe également cette option dans laquelle vous pouvez copier le pilote dans /usr/bin:

Sudo cp geckodriver /usr/bin 
0
Billal Begueradj