webentwicklung-frage-antwort-db.com.de

Selen auf MAC, Meldung: Die ausführbare Datei "Chromedriver" verfügt möglicherweise über falsche Berechtigungen

Ich versuche nur, mit Selenium etwas sehr Grundlegendes auf meinem Mac zu tun, und kann nicht einmal eine Webseite öffnen. Ich erhalte einen Fehler von:

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

Hier ist mein Code unten:

from Selenium import webdriver
import time

link = "https://accounts.google.com"
driver = webdriver.Chrome()
driver.get(link)
time.sleep(5)

driver.quit()
2
Jonathan Ishii

Der Fehler sagt schon alles:

Selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable may have wrong permissions. Please see https://sites.google.com/a/chromium.org/chromedriver/home

Der Fehler weist eindeutig darauf hin, dass der Chromedriver, der erkannt wird, über falsche Berechtigungen verfügt.

Lösung

  • Laden Sie die neueste chromedriver Binärdatei von ChromeDriver - WebDriver für Chrome herunter und speichern Sie sie in Ihrem System.
  • Stellen Sie sicher, dass chromedriver binary die erforderlichen Berechtigungen hat.
  • Übergeben Sie beim Initiieren des WebDriver und WebClient das Argument executable_path zusammen mit dem absoluten Pfad der Binärdatei Chromedriver wie folgt:

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

Das hat funktioniert! Ich habe diese Anweisungen befolgt, um PATH zu aktualisieren: https://www.kenst.com/2015/03/installing-chromedriver-on-mac-osx/

Ich zog meine chromedriver.exe aus dem Finder in das Terminal (/ etc/path), kopierte die Adresse in das Terminal und legte sie in meinem Python IDE ab, wo der PATH eingefügt werden sollte.

1
meng1313

Die meisten Antworten hier und in anderen verwandten Beiträgen empfehlen Benutzern, die Datei einfach nach /usr/bin zu verschieben, und sie funktionieren einwandfrei, wenn Sie nur chromedriver lokal und normal ausführen.

Wenn Sie jedoch Python-Skripte mit Compilern wie cx_freeze zu ausführbaren Dateien kompilieren, können Sie sich den Luxus möglicherweise nicht leisten, wenn Ihr Programm immer einen relativen Link zu chromedriver verwendet.

Wie aus der Fehlermeldung hervorgeht, verfügt Ihr kompiliertes Programm nicht über die Berechtigungen zum Bearbeiten von chromedriver. Um einen relativen Link zu chromedriver auf einem Mac in Ihrem kompilierten Python-Programm zu verwenden, können Sie die Berechtigung von chromedriver in Ihrem Python-Skript programmgesteuert ändern, indem Sie Folgendes verwenden:

import os
os.chmod('/path/to/chromedriver', 0755) # e.g. os.chmod('/Users/user/Documents/my_project/chromedriver', 0755)

Sie können dies folgendermaßen testen:

  1. cd in Ihr Arbeitsverzeichnis

  2. $ chmod 755 chromedriver, damit Ihr Programm es manipulieren kann

P.S. 755 ist die standardmäßige numerische Berechtigung für Dateien in usr/bin. 664 ist die standardmäßige numerische Berechtigung für Dateien in anderen normalen Ordnern (wahrscheinlich Ihrem Arbeitsverzeichnis). Wenn sich chromedriver beschwert, dass es nicht die richtige Berechtigung hat, müssen Sie ihm eine numerische Berechtigung erteilen, die 755 entspricht oder größer ist.

0
Jatt