Python >> Tutoriel Python >  >> Python Tag >> exec()

Selenium sur MAC, message :l'exécutable 'chromedriver' peut avoir des autorisations erronées

La plupart des réponses ici et dans d'autres articles connexes suggèrent aux utilisateurs de simplement déplacer le fichier vers /usr/bin et ils fonctionnent bien si vous exécutez simplement chromedriver localement et normalement.

Cependant, 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 permettre le luxe si votre programme utilise toujours un lien relatif vers chromedriver .

Comme le message d'erreur le suggère, votre programme compilé n'a pas les autorisations pour manipuler chromedriver . Pour utiliser un lien relatif vers chromedriver sur un Mac dans votre programme Python compilé, vous pouvez modifier par programmation l'autorisation de chromedriver dans votre script Python en utilisant :

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 :

  1. cd dans votre répertoire de travail

  2. $ chmod 755 chromedriver pour permettre à votre programme de le manipuler

PS 755 est l'autorisation numérique par défaut pour les fichiers en usr/bin . 664 est l'autorisation numérique par défaut pour les fichiers dans d'autres dossiers normaux (probablement votre répertoire de travail). Ainsi, lorsque chromedriver se plaint qu'il n'a pas la bonne autorisation, vous devez lui accorder une autorisation numérique équivalente ou supérieure à 755 .


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 mentionne clairement que le chromedriver qui est détecté a de mauvaises autorisations.

Solution

  • Téléchargez le dernier chromeddriver binaire de ChromeDriver - WebDriver pour Chrome et enregistrez-le dans votre système.
  • Assurez-vous que chromeddriver binaire ont les autorisations requises.
  • Lors du lancement du WebDriver et WebClient passez l'argument executable_path avec le chemin absolu du chromedriver binaire comme suit :

    from selenium import webdriver
    
    link = "https://accounts.google.com"
    driver = webdriver.Chrome(executable_path='/path/to/chromedriver')
    driver.get(link)
    

Référence

Vous pouvez trouver une discussion pertinente détaillée dans :

  • L'exécutable "Webdrivers" peut avoir des autorisations erronées. Veuillez consulter https://sites.google.com/a/chromium.org/chromedriver/home