MAC上的硒,消息:“ chromedriver”可执行文件可能具有错误的权限

Jon*_*hii 3 python selenium webdriver selenium-chromedriver selenium-webdriver

我只是在尝试使用硒在Mac上做一些非常基础的事情,甚至无法打开网页。我收到一个错误:

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
Run Code Online (Sandbox Code Playgroud)

这是我的代码如下:

from selenium import webdriver
import time

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

driver.quit()
Run Code Online (Sandbox Code Playgroud)

jar*_*yeo 7

此处以及其他相关帖子中的大多数答案都建议用户将文件移至该位置,/usr/bin如果您只是在chromedriver本地正常运行,则它们可以正常工作。

但是,如果您使用诸如的编译器将Python脚本编译为可执行文件cx_freeze,则如果您的程序始终使用与的相对链接,则可能无法负担得起chromedriver

如错误消息所提示,您的编译程序没有操作权限chromedriver。要chromedriver在已编译的Python程序中使用Mac上的相对链接,您可以使用以下命令以编程方式更改chromedriverPython脚本中的权限:

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

您可以通过执行以下操作对此进行测试:

  1. cd 到您的工作目录

  2. $ chmod 755 chromedriver 允许您的程序对其进行操作

PS 755usr/bin。中文件的默认数字权限。664是其他普通文件夹(可能是您的工作目录)中文件的默认数字权限。因此,当chromedriver抱怨它没有正确的权限时,您需要授予它等于或大于的数字权限755

  • python3 需要“0o755” (4认同)

Deb*_*anB 6

该错误说明了一切:

selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable may have wrong permissions. Please see https://sites.google.com/a/chromium.org/chromedriver/home
Run Code Online (Sandbox Code Playgroud)

该错误清楚地提到检测到的chromedriver具有错误的权限。


解决方案

  • ChromeDriver - WebDriver for Chrome下载最新的chromedriver二进制文件并将其保存在您的系统中。
  • 确保chromedriver二进制文件具有所需的权限。
  • 在启动WebDriverWebClient时,传递参数executable_path以及chromedriver二进制文件的绝对路径,如下所示:

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

参考

您可以在以下位置找到详细的相关讨论: