J'essaie simplement de faire quelque chose de très basique sur mon Mac en utilisant Selenium et je ne peux même pas ouvrir une page Web. Je reçois une erreur de:
Traceback (most recent call last):
File "/Users/godsinred/Desktop/InstagramLiker/GmailAccountGenerator.py", line 10, in <module>
driver = webdriver.Chrome()
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/Selenium/webdriver/chrome/webdriver.py", line 68, in __init__
self.service.start()
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/Selenium/webdriver/common/service.py", line 88, in start
os.path.basename(self.path), self.start_error_message)
Selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable may have wrong permissions. Please see https://sites.google.com/a/chromium.org/chromedriver/home
Voici mon code ci-dessous:
from Selenium import webdriver
import time
link = "https://accounts.google.com"
driver = webdriver.Chrome()
driver.get(link)
time.sleep(5)
driver.quit()
L'erreur dit tout:
Selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable may have wrong permissions. Please see https://sites.google.com/a/chromium.org/chromedriver/home
L'erreur indique clairement que les chromedriver qui sont détectés ont des autorisations erronées.
Lors du lancement des WebDriver _ et WebClient, transmettez l'argument executable_path ainsi que le chemin absolu du binaire chromedriver comme suit:
from Selenium import webdriver
link = "https://accounts.google.com"
driver = webdriver.Chrome(executable_path='/path/to/chromedriver')
driver.get(link)
Cela a fonctionné! J'ai suivi ces instructions pour mettre à jour PATH: https://www.kenst.com/2015/03/installing-chromedriver-on-mac-osx/
J'ai fait glisser mon chromedriver.exe du Finder dans Terminal (/ etc/path), puis j'ai copié l'adresse dans Terminal et l'a déposée dans mon Python IDE où le PATH doit être inséré.
La plupart des réponses ici et dans d'autres publications connexes suggèrent aux utilisateurs de simplement déplacer le fichier vers /usr/bin
et ils fonctionnent correctement si vous exécutez simplement chromedriver
localement et normalement.
Toutefois, si vous compilez des scripts Python dans des exécutables à l'aide de compilateurs tels que cx_freeze
, vous ne pourrez peut-être pas vous offrir ce luxe si votre programme utilise toujours un lien relatif à chromedriver
.
Comme le message d'erreur le suggère, votre programme compilé ne dispose pas des autorisations pour manipuler chromedriver
. Pour utiliser un lien relatif vers chromedriver
sur un Mac dans votre programme Python compilé, vous pouvez modifier par programme l'autorisation de chromedriver
dans votre script Python à l'aide de:
import os
os.chmod('/path/to/chromedriver', 0755) # e.g. os.chmod('/Users/user/Documents/my_project/chromedriver', 0755)
Vous pouvez tester cela en procédant comme suit:
cd
dans votre répertoire de travail
$ chmod 755 chromedriver
pour permettre à votre programme de le manipuler
P.S.
755
est l'autorisation numérique par défaut pour les fichiers dansusr/bin
.664
est l'autorisation numérique par défaut pour les fichiers situés dans d'autres dossiers normaux (probablement votre répertoire de travail). Ainsi, lorsquechromedriver
se plaint de ne pas disposer de la bonne permission, vous devez lui accorder une permission numérique égale ou supérieure à755
.