【问题标题】:Selenium on MAC, Message: 'chromedriver' executable may have wrong permissionsMAC 上的 Selenium,消息:“chromedriver”可执行文件可能具有错误的权限
【发布时间】:2018-09-22 01:29:36
【问题描述】:

我只是想在我的 Mac 上使用 selenium 做一些非常基本的事情,我什至无法打开网页。我收到以下错误:

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

下面是我的代码:

from selenium import webdriver
import time

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

driver.quit()

【问题讨论】:

    标签: python selenium selenium-webdriver webdriver selenium-chromedriver


    【解决方案1】:

    在 Windows 中对我有用的是将驱动程序的位置添加到 Windows 本地 PATH var,重新启动我的 python 环境,以便在运行后显示驱动程序的路径:

    import os;path = os.getenv('PATH'); print(path);
    

    然后我在加载驱动的时候没有指定路径:

    from selenium import webdriver
    driver =  webdriver.Chrome()
    

    如果我尝试将路径放在 Chrome() 调用中,则会导致权限错误。添加到本地环境路径就足够了。

    【讨论】:

      【解决方案2】:

      如果您在 Windows 上,请提供包含文件名的路径。例如, './chromedriver/chromedriver.exe' 我的代码行如下所示。

      service = webdriver.chrome.service.Service('./chromedriver/chromedriver.exe')

      【讨论】:

        【解决方案3】:

        查看这个主题

        1- 如果您使用的是 Linux,请访问包含该文件的文件夹 Chromedriver.exe 设置在 755

        2- 检查代码中 Chromedriver.exe 文件的正确路径

        3- 如果您使用的是 Windows 服务器,请检查当前用户是否可以使用 Chromedriver.exe 文件(不仅管理员有权访问 Chromedriver.exe - 请参见 c://用户...)

        【讨论】:

          【解决方案4】:

          错误说明了一切:

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

          错误清楚地提到被检测到的 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)
            

          参考

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

          【讨论】:

          • 非常感谢它成功了。我也忘了将它添加到我的路径中。在终端执行 sudo paths /etc/paths/ 并将chrome驱动添加到paths目录
          【解决方案5】:

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

          但是,如果您使用诸如 cx_freeze 之类的编译器将 Python 脚本编译为可执行文件,那么如果您的程序始终使用指向 chromedriver 的相对链接,您可能无法承受这种奢侈。

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

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

          您可以通过以下方式进行测试:

          1. cd 到你的工作目录

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

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

          【讨论】:

          • python3 需要 "0o755"
          • 我发现这也可以用来让 chromedriver 在放置在临时目录时运行。在运行测试时非常有用
          【解决方案6】:

          这行得通!我按照这些说明更新了 PATH:https://www.kenst.com/2015/03/installing-chromedriver-on-mac-osx/

          我将我的 chromedriver.exe 从 Finder 拖到终端 (/etc/paths),然后将终端中的地址复制到我的 Python IDE 中应该插入 PATH 的位置。

          【讨论】:

          • 欢迎来到 Stack Overflow!虽然链接是分享知识的好方法,但如果它们在未来被破坏,它们将无法真正回答问题。将回答问题的链接的基本内容添加到您的答案中。如果内容太复杂或太大而无法在此处放置,请描述所提出解决方案的总体思路。请记住始终保留指向原始解决方案网站的链接引用。见:How do I write a good answer?
          猜你喜欢
          • 1970-01-01
          • 2022-01-19
          • 1970-01-01
          • 2018-03-22
          • 1970-01-01
          • 1970-01-01
          • 2020-10-22
          • 2017-06-14
          • 2022-01-20
          相关资源
          最近更新 更多