【问题标题】:'Webdrivers' executable may have wrong permissions. Please see https://sites.google.com/a/chromium.org/chromedriver/home'Webdrivers' 可执行文件可能有错误的权限。请参阅 https://sites.google.com/a/chromium.org/chromedriver/home
【发布时间】:2022-01-24 07:10:35
【问题描述】:

我环顾四周检查了这两个文档,但没有找到答案。

我一直在尝试使用 InstaPy 一个 instagram api for python。在出现多个错误并假设 InstaPy 只是遇到一些问题后,我尝试使用 selinium 对其进行原始编码。在插入示例代码并将其更改为我喜欢的之后,我只是确保这个可以工作。我收到一个新错误而不是旧错误,说权限可能不正确。我尝试重新安装并以管理员身份运行,但没有任何效果。我该如何解决这个问题和/或这是什么意思

代码:

import time
from selenium import webdriver

driver = webdriver.Chrome('C:\Webdrivers')  # Optional argument, if not specified will search path.
driver.get('http://www.google.com/xhtml');
time.sleep(5) # Let the user actually see something!
search_box = driver.find_element_by_name('q')
search_box.send_keys('ChromeDriver')
search_box.submit()
time.sleep(5) # Let the user actually see something!
driver.quit()

错误:

Traceback (most recent call last):
  File "C:\Program Files (x86)\Python36-32\lib\site-packages\selenium\webdriver\common\service.py", line 74, in start
    stdout=self.log_file, stderr=self.log_file)
  File "C:\Program Files (x86)\Python36-32\lib\subprocess.py", line 707, in __init__
    restore_signals, start_new_session)
  File "C:\Program Files (x86)\Python36-32\lib\subprocess.py", line 990, in _execute_child
    startupinfo)
PermissionError: [WinError 5] Access is denied

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Webdrivers\RawBot.py", line 5, in <module>
    driver = webdriver.Chrome('C:\Webdrivers')  # Optional argument, if not specified will search path.
  File "C:\Program Files (x86)\Python36-32\lib\site-packages\selenium\webdriver\chrome\webdriver.py", line 62, in __init__
    self.service.start()
  File "C:\Program Files (x86)\Python36-32\lib\site-packages\selenium\webdriver\common\service.py", line 86, in start
    os.path.basename(self.path), self.start_error_message)
selenium.common.exceptions.WebDriverException: Message: 'Webdrivers' executable may have wrong permissions. Please see https://sites.google.com/a/chromium.org/chromedriver/home

【问题讨论】:

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


    【解决方案1】:

    此错误消息...

    WebDriverException: Message: 'Webdrivers' executable may have wrong permissions.
    

    ...暗示您尝试使用的 ChromeDriver 变体具有错误的权限。


    你似乎已经尝试过了:

    driver = webdriver.Chrome('C:\Webdrivers')  # Optional argument, if not specified will search system $PATH variable.
    

    几句话:

    • 如果你的底层

      • 您需要从ChromeDriver Download Location下载chromedriver_win32.zip并解压后使用。
      • 此外,如果您明确指定 Chromedriver 二进制路径,则还必须附加二进制扩展名,即 chromedriver.exe
      • 在提到 Chromedriver 二进制路径时,您必须使用单个 forward slash(/) 以及原始 (r) 开关,或者您必须使用转义的 backslash 即 @ 987654339@.
      • 所以你的有效代码行将是:

        driver = webdriver.Chrome(executable_path=r'C:/path/to/chromedriver.exe')
        
    • 如果你的底层

      • 您必须从 ChromeDriver Download Location 下载 chromedriver_linux64 并解压以供使用。
      • 此外,如果您明确指定 Chromedriver 二进制路径,您不必 必须为可执行二进制文件提供任何扩展名,即 chromedriver em>。
      • 在提及 Chromedriver 二进制路径时,您必须使用单个 forward slash,即 (/)
      • 所以你的有效代码行将是:

        driver = webdriver.Chrome(executable_path='/path/to/chromedriver')
        
    • 如果你的底层

      • 您必须从 ChromeDriver Download Location 下载 chromedriver_mac64 并解压以供使用。
      • 此外,如果您明确指定 Chromedriver 二进制路径,您不必 必须为可执行二进制文件提供任何扩展名,即 chromedriver em>。
      • 在提及 chromedriver 二进制路径时,您必须使用单个 forward slash,即 (/)
      • 所以你的有效代码行将是:

        driver = webdriver.Chrome(executable_path='/path/to/chromedriver')
        

    【讨论】:

    • 在 Windows 10 和 python 3.7.1 上我不需要 raw (r) 开关。也不需要 'executable_path=' 不完全确定为什么,下面的链接表明 os.path.normpath 纠正了这一点。这种做法可能已经包含在 webdriver.Chrome() pythonconquerstheuniverse.wordpress.com/2008/06/04/…
    【解决方案2】:

    当您输入完整的文件名“chromedriver.exe”时,这个问题就解决了。如果你在 Windows 上试试这个

    【讨论】:

    • Ubuntu 怎么样?
    • @Mostafa chromedriver,没有 .exe
    【解决方案3】:

    你只需要添加

    /chromedriver.exe

    在路径的尽头是这样的:

    driver = webdriver.Chrome('C:/Users/User/Downloads/chromedriver_win32/chromedriver.exe')

    注意:如果你从“文件资源管理器”复制路径,你会得到:

    C:\Users\User\Downloads\chromedriver_win32

    您需要像这样使用双反斜杠:

    C:\\Users\\User\\Downloads\\chromedriver_win32

    所以您不会收到语法错误。或者您可以只使用正斜杠。

    【讨论】:

      【解决方案4】:

      如果您使用的是 linux 操作系统,更改文件权限可能会解决问题。但请注意您对权限的操作:

      chmod 755 "/path to chromedriver file"
      

      我通过 python 本身下载了文件,不幸的是禁用了执行权限,这是它的快速修复。

      【讨论】:

        【解决方案5】:

        如果您使用的是 chrome,则必须指定 chromedriver 的完整路径。 搜索 chromedriver 可执行文件所在的目录。 单击shift+右键单击可执行文件。 选择“复制为路径”并将其粘贴到您的脚本中。 不要忘记使用双反斜杠

        应该是这样的:

        driver = webdriver.Chrome('C:\\Utility\\BrowserDrivers\\chromedriver.exe')
        

        【讨论】:

          【解决方案6】:

          在 django 中有同样的问题。

          但是,当我在本地运行相同的代码(未激活我的 django 应用程序)时,一切正常,无需显式定义 chrome 驱动程序的路径。

          通过明确定义路径和 chromederiver.exe 绕过它

          类似于上面的答案。 path = "C:/Users/YOUR_USER/Desktop/chromedriver/chromedriver.exe"

          在我的情况下,因为我想最终发布我的应用,所以我使用了动态路径

          即。

          import os
          
          BASE_oaAPP_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
          BASE_oaAPP_Utilities_DIR  = os.path.join(BASE_oaAPP_DIR, 'mySubFolderInTheApp')
          
          def utilsPathFileName(fileName):
              return os.path.join(BASE_oaAPP_Utilities_DIR, fileName)
          
          chrome_path = utilsPathFileName('chromedriver.exe')
          driver = webdriver.Chrome(chrome_path)
          

          【讨论】:

            【解决方案7】:

            如果您使用 Mac OS Big Sur 和 Chromedriver 90+,您的 Chromedriver 权限可能会出错。

            如果是这种情况,不是您通过“chmod”更改的文件权限,而是禁止执行 Web 驱动程序的苹果商店保护。

            如果您希望允许在您的 Python 环境中或通过命令行使用此驱动程序,请输入:

            `$ sudo xattr -r -d com.apple.quarantine  /usr/local/bin/chromedriver`
            

            【讨论】:

              【解决方案8】:

              chmod 755 "/path to chromedriver file"

              这对我有帮助

              【讨论】:

                【解决方案9】:

                同样的问题。我的解决方案是在 Linux os 中,Pycharm 编辑器...

                1. 确保您的 webdriver 文件与其他 python 文件(如 selinum_driver.py)一起使用
                2. 然后只需复制路径并将其粘贴到您的 webdriver.Chrome('path')
                3. 无需编写webdriver.exe

                driver = webdriver.Chrome('/home/raju/Documents/Python-selenium/chromedriver')

                【讨论】:

                  【解决方案10】:

                  对于 WINDOWS 10:在 Visual Studio Code 中运行我的测试代码时,我遇到了类似的情况并显示相同的错误消息。为我解决的方法是关闭 VS Code 应用程序并通过右键菜单以管理员身份重新打开该应用程序。

                  【讨论】:

                    【解决方案11】:

                    在 Linux 中,您还需要指定包括文件本身在内的完整路径,而不仅仅是文件夹(在 Linux 中,Chrome 驱动程序的下载文件默认位于文件夹中,例如“chromedriver_linux64”,打开文件夹并检查确切的文件名,通常是“chromedriver”):

                    from selenium import webdriver
                    chrome_driver_path = "/home/mn/chromedriver_linux64/chromedriver"
                    driver = webdriver.Chrome(executable_path=chrome_driver_path)
                    driver.get("https://www.amazon.com")
                    

                    【讨论】:

                      【解决方案12】:

                      对我来说,以上答案均无效。但是将 chromedriver.exe 移动到新路径(在我的情况下为桌面)解决了它。

                      path = "C:/Users/YOUR_USER/Desktop/chromedriver/chromedriver.exe"
                      

                      【讨论】:

                        【解决方案13】:

                        我在错误安装驱动器时遇到了同样的错误(当我为 mac 下载 windows 驱动程序时)一旦我纠正它就可以正常工作

                        【讨论】:

                          【解决方案14】:

                          您需要在驱动程序路径的末尾添加exe,它可以工作。

                          【讨论】:

                            【解决方案15】:

                            找到您安装的驱动程序.exe, shift+右键, 复制为路径, 将其粘贴到您的 IDE

                            【讨论】:

                              【解决方案16】:

                              我们可以为 centos

                              解决这个问题
                              #Install package chromedriver. Install it using yum    
                              yum install chromedriver
                              
                              #Import following package in python.
                              from selenium import webdriver
                              
                              #Add following options before initializing the webdriver
                              chromeOptions = webdriver.ChromeOptions()
                              chromeOptions.add_argument("--headless")
                              chromeOptions.add_argument("--remote-debugging-port=9222")
                              chromeOptions.add_argument('--no-sandbox')
                              driver = webdriver.Chrome('/usr/bin/chromedriver',chrome_options=chromeOptions)
                              

                              【讨论】:

                                【解决方案17】:

                                WINDOWS : 提供完整的文件路径解决了问题。

                                很多教程和文章都是用以前的版本记录的,你只需要给出包含web驱动的目录路径。但是现在您还必须提供您正在使用的特定驱动程序路径。

                                而不是C:/WebDrivers 提供完整的文件路径为C:/WebDrivers/chromedriver.exe

                                【讨论】:

                                  【解决方案18】:

                                  如果您在 Windows 计算机上运行它,您还可以将其添加到 Windows PATH(环境变量)中,这样您就不必声明 executable_path。你可以说:webdriver.Chrome(options=your_options)

                                  【讨论】:

                                    【解决方案19】:

                                    我在 MacOs 上遇到了他的错误,在将路径更改为下面给出的路径时,问题得到了解决。

                                    driver = webdriver.Chrome(executable_path='/path/to/chromedriver')
                                    

                                    【讨论】:

                                    • 您能否详细说明您认为这可以解决问题的原因?
                                    • 我最初使用的是可执行路径 = path,因为 chromedriver 已经安装在项目路径中。我得到了错误。在检查 Chromedriver [chromedriver.chromium.org/getting-started] 文档时,提到选择路径的符号对于不同的编程语言和扩展是不同的。例如,在 windows 中它以 .exe 结尾,但在 Mac 中,它没有
                                    【解决方案20】:

                                    之后我一直遇到同样的问题:

                                    • 我的脚本无法识别我的 $PATH 中的 chromdriver.exe(是的,它在那里)
                                    • 授予 exe 运行权限
                                    • 将“path/to/chromedriver.exe”传递到 Chrome()

                                    这就是解决它的方法: 不要在python路径中提供.exe(只提供路径中的chromedriver)

                                    示例:

                                    driver = webdriver.Chrome("/Library/Frameworks/Python.framework/.../webdriver/chrome/chromedriver")
                                    

                                    不幸的是,我仍然无法让我的脚本从我的 $PATH 变量中读取 chromedriver.exe 路径。如果有人帮忙,仍然会很感激,尽管这超出了这个问题的范围

                                    【讨论】:

                                      【解决方案21】:

                                      Windows 用户和 Visual Studio 代码:在提及 Chromedriver 二进制路径时,您必须使用单个正斜杠,即 (/) 以及原始 (r) 开关,或者您必须使用转义的反斜杠,即 (\)。 以及使用确切的路径并在路径末尾添加 chromedriver.exe 以直接指向可执行文件:

                                      driver = webdriver.Chrome(executable_path=r'C:/path/to/chromedriver.exe')
                                      

                                      或:

                                      driver = webdriver.Chrome(r'C:\\Users\\wanja\\Downloads\\Compressed\\chromedriver_win32\\chromedriver.exe')
                                      

                                      【讨论】:

                                        猜你喜欢
                                        • 1970-01-01
                                        • 1970-01-01
                                        • 1970-01-01
                                        • 2018-09-22
                                        • 2019-02-17
                                        相关资源
                                        最近更新 更多