【问题标题】:Error message: "'chromedriver' executable needs to be available in the path"错误消息:“'chromedriver' 可执行文件需要在路径中可用”
【发布时间】:2024-05-15 18:15:02
【问题描述】:

我在 python 中使用 selenium,并从这个站点为我的 windows 计算机下载了 chromedriver:http://chromedriver.storage.googleapis.com/index.html?path=2.15/

下载 zip 文件后,我将 zip 文件解压缩到我的下载文件夹。然后我将可执行二进制文件的路径(C:\Users\michael\Downloads\chromedriver_win32)放入环境变量“Path”中。

但是,当我运行以下代码时:

  from selenium import webdriver

  driver = webdriver.Chrome()

...我不断收到以下错误消息:

WebDriverException: Message: 'chromedriver' executable needs to be available in the path. Please look at     http://docs.seleniumhq.org/download/#thirdPartyDrivers and read up at http://code.google.com/p/selenium/wiki/ChromeDriver

但是 - 如上所述 - 可执行文件是(!)在路径中......这里发生了什么?

【问题讨论】:

  • 尝试将 chromedriver.exe 复制到与 Python 脚本相同的目录中。
  • 通过Chocolatey 安装会将其添加到路径choco install chromedriver
  • 用户在pycharm中遇到此问题,重启即可解决
  • 我同意 ImNt 的回答。虽然我想为那些使用 virtualenv 的人添加它,但您应该以管理员身份在您的 venv 文件中运行 python,使用以下示例格式:driver = webdriver.Chrome(r'C:/Users/michael/Downloads/chromedriver_win32 /chromedriver.exe')
  • @MalikBrahimi 我一直在到处寻找这个解决方案,但在我找到你的评论之前,它们都没有真正起作用。非常感谢

标签: python selenium selenium-chromedriver


【解决方案1】:

我看到讨论仍然在谈论通过下载二进制文件并手动配置路径来设置 chromedriver 的旧方法。

这可以使用webdriver-manager自动完成

pip install webdriver-manager

现在问题中的上述代码只需通过以下更改即可工作,

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager

driver = webdriver.Chrome(ChromeDriverManager().install())

同样可以用来设置 Firefox、Edge 和 ie 二进制文件。

【讨论】:

  • @Navarasu 恕我直言,为什么有人会在当前为 3.7 时遵循 3.6 中的某些内容。下次最好明确地说它适用于 3.6 .... 谢谢
  • 这太棒了,因为它也保持最新
  • 这个解决方案的好处是它比其他基于特定路径设置的解决方案具有更大的灵活性,我认为这在多台机器上使用脚本是不切实际的。
  • 我在 Azure Databricks 中尝试这个,它给我这个错误ValueError: Could not get version for Chrome with this command: google-chrome --version || google-chrome-stable --version。我该怎么办?
  • 这很酷!比我使用的 PATH 好多了
【解决方案2】:

您可以测试它是否真的在 PATH 中,如果您打开一个 cmd 并输入 chromedriver(假设您的 chromedriver 可执行文件仍然是这样命名的)并按 Enter。如果出现Starting ChromeDriver 2.15.322448,说明PATH 设置正确,还有其他问题。

或者,您可以像这样使用 chromedriver 的直接路径:

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

所以在你的具体情况下:

 driver = webdriver.Chrome("C:/Users/michael/Downloads/chromedriver_win32/chromedriver.exe")

【讨论】:

  • 感谢您的回答:确实出现了“正在启动 ChromeDriver 2.15.322448”。 “只允许本地连接。”也出现了。 ...但我想这可以吗? .... 我想知道的一件事是:在网站上只有 32 位版本的 chromedriver 可用....但这应该可以在我的 64 位窗口上正常工作,不是吗?
  • @steady_progress 是的,没关系。这适用于 64 位 Windows;我自己在用。我怀疑硒版本可能会导致问题?你安装了哪一个?你用pip安装了吗?
  • 将 webdrivers 添加到 PATH 时,无论操作系统如何,都只包括存储 webdriver 的目录,而不包括可执行文件。示例:PATH=$PATH:/path/to/webdriver/folder,而不是 PATH=$PATH:/path/to/webdriver/chromedriver。此外,使用 PATH 比将位置传递给您的 webdriver.Chrome() 调用更便携,因为我们始终可以假设 PATH 在您的代码运行的任何地方都设置正确,但我们不能假设它们的文件结构设置相同.
  • 嘿,stable_progress。我也有类似的情况,但对我来说@lmNt 的回答不起作用。我似乎也无法成功编辑我的 PATH 变量。有人有什么建议吗?
  • 尝试使用相同的解决方案,但收到此错误:WebDriverException: Message: 'chromedriver.exe' executable may have wrong permissions.请看sites.google.com/a/chromium.org/chromedriver/home
【解决方案3】:

Ubuntu 上:

sudo apt install chromium-chromedriver

Debian 上:

sudo apt install chromium-driver

ma​​cOS 上安装 Homebrew 然后执行

brew install --cask chromedriver

【讨论】:

  • 然后使用:driver = webdriver.Chrome('/usr/lib/chromium-browser/chromedriver') ..不改变$PATH
  • @alchemy 你确定你需要这样做吗?我记得,driver = webdriver.Chrome() 对我来说效果很好。
  • 嗨,鲍里斯,是的,不知道为什么..即使在添加到 PATH 之后,没有它也无法工作。我确信正确设置路径会更好,但我只需要快速使用 Chromedriver 做一件事
【解决方案4】:

适用于 Linux 和 OSX

第 1 步:下载 chromedriver

# You can find more recent/older versions at http://chromedriver.storage.googleapis.com/
# Also make sure to pick the right driver, based on your Operating System
wget http://chromedriver.storage.googleapis.com/81.0.4044.69/chromedriver_mac64.zip

对于 debian:wget https://chromedriver.storage.googleapis.com/2.41/chromedriver_linux64.zip

第 2 步:将 chromedriver 添加到 /usr/local/bin

unzip chromedriver_mac64.zip
sudo mv chromedriver /usr/local/bin
sudo chown root:root /usr/local/bin/chromedriver
sudo chmod +x /usr/local/bin/chromedriver

你现在应该可以运行了

from selenium import webdriver

browser = webdriver.Chrome()
browser.get('http://localhost:8000')

没有任何问题

【讨论】:

    【解决方案5】:

    与pycharm社区版的情况相同,因此,对于cmd,您必须重新启动ide才能重新加载路径变量。重启你的ide应该没问题。

    【讨论】:

    • 谢谢。我在 Visual Studios 中遇到了同样的问题。刚刚重新启动 IDE,它工作了 :) 谢谢
    • 我重新启动了 PyCharm ......它就像一个魅力 :) - 我不知道我的 IDE 必须重新启动才能获取更新的环境变量。
    【解决方案6】:

    我们必须添加路径字符串,在字符串之前以字母r 开头,用于原始字符串。我用这种方法测试过,它可以工作。

    driver = webdriver.Chrome(r"C:/Users/michael/Downloads/chromedriver_win32/chromedriver.exe")
    

    【讨论】:

      【解决方案7】:

      根据instruction,在实例化webdriver.Chrome时需要包含ChromeDriver的路径,例如:

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

      【讨论】:

      • 如果您将这些说明滚动到右侧,会有一条注释说“可选参数,如果未指定将搜索路径。”但至少某些版本的 webdriver 似乎会检查他们在路径中找到的任何 chromedriver,如果它对它不“满意”(错误版本等),它将不会使用它(除非通过设置此参数强制尝试)。它会继续寻找更好的版本,如果找不到,就会抱怨。 (“找不到合适的 chromedriver”会比“找不到 chromedriver”更好。)
      【解决方案8】:

      另一种方法是下载并解压chromedriver并将'chromedriver.exe'放在C:\Program Files\Python38\Scripts中,然后您无需提供路径司机,只是

      driver= webdriver.Chrome()

      【讨论】:

        【解决方案9】:

        在将 chromedriver 添加到路径之前,请确保它与您的浏览器版本相同。

        如果没有,您将需要匹配版本:更新/降级您的 chrome,以及升级/降级您的网络驱动程序。

        我建议尽可能更新您的 chrome 版本,以及匹配的 webdriver。

        要更新 chrome:

        • 点击右上角的三个点。
        • 点击help -> About Google Chrome
        • 更新版本并重启chrome

        然后从这里下载兼容版本:http://chromedriver.chromium.org/downloads .

        注意:最新的 chromedriver 并不总是与最新版本的 chrome 匹配!

        现在您可以将其添加到 PATH:

        1. 在您计算机的某处创建一个新文件夹,您将在其中放置 Web 驱动程序。 我在C:\Program Files中创建了一个名为webdrivers的文件夹

        2. 复制文件夹路径。就我而言,它是C:\Program Files\webdrivers

        3. 右击this PC -> properties:

        1. 右击Advanced System settings
        2. 点击Environment Variables
        3. System variables 中,单击path 并单击edit
        4. 点击new
        5. 粘贴之前复制的路径
        6. 在所有窗口上单击“确定”

        就是这样!我使用了pycharm,我不得不重新打开它。也许它与其他 IDE 或终端相同。

        【讨论】:

          【解决方案10】:

          确定最好的方法在这里:

          下载chromedriver并解压,将'chromedriver.exe'放到C:\Python27\Scripts中,就不需要提供驱动路径了,

          driver= webdriver.Chrome()
          

          你不需要添加路径或任何东西

          【讨论】:

            【解决方案11】:

            为该线程的未来读者提供一些额外的输入/说明, 以避免修补 PATH 环境。 Windows 级别的变量并重新启动 Windows 系统: (我来自https://*.com/a/49851498/9083077 的答案副本适用于 Chrome):

            (1) 下载 chromedriver(如本线程前面所述)并将(解压缩的)chromedriver.exe 放在 X:\Folder\of\your\choice

            (2) Python代码示例:

            import os;
            os.environ["PATH"] += os.pathsep + r'X:\Folder\of\your\choice';
            
            from selenium import webdriver;
            browser = webdriver.Chrome();
            browser.get('http://localhost:8000')
            assert 'Django' in browser.title
            

            注意事项: (1) 示例代码(在引用的答案中)可能需要大约 5 秒才能打开指定 url 的 Firefox 浏览器。 (2) 如果没有服务器已经在指定的 url 上运行或提供标题包含字符串 'Django' 的页面,python 控制台将显示以下错误: 在 browser.title 中断言“Django” 断言错误

            【讨论】:

              【解决方案12】:

              当你解压chromedriver时,请务必指定一个确切的位置,以便你以后可以跟踪它。下面,您将为您的操作系统获取正确的 chromedriver,然后将其解压缩到一个确切的位置,稍后可以在您的代码中作为参数提供。

              wget http://chromedriver.storage.googleapis.com/2.10/chromedriver_linux64.zip unzip chromedriver_linux64.zip -d /home/virtualenv/python2.7.9/

              【讨论】:

              • /usr/local/bin/ 全局安装。
              【解决方案13】:

              如果您正在使用机器人框架 RIDE。然后你可以从它的官网下载Chromedriver.exe,并将这个.exe文件保存在C:\Python27\Scripts目录下。现在提到这个路径作为你的环境变量,例如。 C:\Python27\Scripts\chromedriver.exe.

              重新启动计算机并再次运行相同的测试用例。你不会再遇到这个问题了。

              【讨论】:

                【解决方案14】:

                可执行路径已被弃用!

                如果您收到 exectuable_path ash was deprecated 警告,这里是修复...

                from selenium import webdriver
                from selenium.webdriver.chrome.service import Service
                from webdriver_manager.chrome import ChromeDriverManager
                def test_me(my_name):
                    s=Service(ChromeDriverManager().install())    
                    chrome_driver = webdriver.Chrome(service=s)
                    ...
                

                【讨论】:

                  【解决方案15】:

                  在您确定PATH设置正确后,如果它不起作用,可以尝试重新启动计算机。

                  在 Windows 7 上,我总是在 WebDriverException 上收到错误:消息:对于 chromedriver、gecodriver、IEDriverServer。我很确定我有正确的路径。重启电脑,一切正常

                  【讨论】:

                    【解决方案16】:

                    我遇到了和你一样的问题。 我正在使用 PyCharm 编写程序,我认为问题在于 PyCharm 中的环境设置而不是操作系统。 我通过转到脚本配置然后手动编辑环境变量中的 PATH 解决了这个问题。 希望对您有所帮助!

                    【讨论】:

                    • 另一种选择是将您的 chromedriver 直接移动到 /usr/local/bin,然后您根本不用担心添加路径
                    【解决方案17】:

                    当我下载 chromedriver.exe 时,我只是将它移动到 PATH 文件夹 C:\Windows\System32\chromedriver.exe 并遇到了完全相同的问题。

                    对我来说,解决方案是只更改 PATH 中的文件夹,所以我只是将它移动到也位于 PATH 中的 Pycharm Community bin 文件夹中。 例如:

                    • C:\Windows\System32\chromedriver.exe --> 给我例外
                    • C:\Program Files\JetBrains\PyCharm 社区版 2019.1.3\bin\chromedriver.exe --> 运行良好

                    【讨论】:

                      【解决方案18】:

                      Mac Mojave 运行机器人测试框架和 Chrome 77 时遇到此问题。这解决了问题。感谢@Navarasu 为我指明了正确的方向。

                      $ pip install webdriver-manager --user # install webdriver-manager lib for python
                      $ python # open python prompt
                      

                      接下来,在 python 提示符下:

                      from selenium import webdriver
                      from webdriver_manager.chrome import ChromeDriverManager
                      driver = webdriver.Chrome(ChromeDriverManager().install())
                      
                      # ctrl+d to exit
                      

                      这会导致以下错误:

                      Checking for mac64 chromedriver:xx.x.xxxx.xx in cache
                      There is no cached driver. Downloading new one...
                      Trying to download new driver from http://chromedriver.storage.googleapis.com/xx.x.xxxx.xx/chromedriver_mac64.zip
                      ...
                      TypeError: makedirs() got an unexpected keyword argument 'exist_ok'
                      
                      • 我现在得到了最新的下载链接
                        • 下载chromedriver并解压到你想要的地方
                        • 例如:~/chromedriver/chromedriver

                      用编辑器打开~/.bash_profile并添加:

                      export PATH="$HOME/chromedriver:$PATH"
                      

                      打开新的终端窗口,ta-da ?

                      【讨论】:

                        【解决方案19】:

                        正如Aphid 在他的comment 中提到的,如果您想手动执行此操作,您必须包含仅包含存储您的网络驱动程序的目录不是可执行文件强>:

                        示例:

                        右:

                        PATH=$PATH:/path/to/webdriver/文件夹

                        错误:

                        PATH=$PATH:/path/to/webdriver/chromedriver.exe


                        Windows 系统变量和 CMD 测试:

                        【讨论】:

                          【解决方案20】:

                          在我的情况下,当我将 chromedriver 文件复制到 c:\Windows 文件夹时,此错误就会消失。这是因为 windows 目录位于 python 脚本检查 chromedriver 可用性的路径中。

                          【讨论】:

                            【解决方案21】:

                            如果您使用远程解释器,您还必须检查其可执行路径是否已定义。在我的情况下,从远程 Docker 解释器切换到本地解释器解决了这个问题。

                            【讨论】:

                              【解决方案22】:

                              C:\Windows 处添加 webdriver(chromedriver.exe 或 geckodriver.exe)。 这在我的情况下有效

                              【讨论】:

                                【解决方案23】:

                                最好的方法可能是获取当前目录并将剩余地址附加到它。 像这段代码(Windows 上的 Word。在 linux 上你可以使用 pwd 行): webdriveraddress = str(os.popen("cd").read().replace("\n", ''))+'\path\to\webdriver'

                                【讨论】:

                                  【解决方案24】:

                                  我在 Webdriver 3.8.0(Chrome 73.0.3683.103 和 ChromeDriver 73.0.3683.68)上遇到了这个问题。我这样做后问题就消失了

                                  pip install -U selenium
                                  

                                  将 Webdriver 升级到 3.14.1。

                                  【讨论】:

                                    【解决方案25】:

                                    检查 chrome 驱动程序的路径,它可能无法从那里获取。 只需将驱动程序位置复制粘贴到代码中即可。

                                    【讨论】:

                                      【解决方案26】:

                                      对于 MAC 用户:

                                      1. 下载 Chrome 驱动程序:https://sites.google.com/a/chromium.org/chromedriver/downloads

                                      2.在终端输入“sudo nano /etc/paths”

                                      3.添加带有Cromedriver路径的行,例如:“/Users/username/Downloads”

                                      1. 再次尝试运行测试!

                                      【讨论】:

                                        【解决方案27】:

                                        对于 mac osx 用户

                                            brew tap homebrew/cask
                                            brew cask install chromedriver
                                        
                                        

                                        【讨论】:

                                        【解决方案28】:

                                        (适用于 Mac 用户) 我有同样的问题,但我通过这种简单的方式解决了: 您必须将您的 chromedriver.exe 放在与您执行的脚本相同的文件夹中,而不是在 pyhton 中编写此指令:

                                        导入操作系统

                                        os.environ["PATH"] += os.pathsep + r'X:/your/folder/script/'

                                        【讨论】:

                                        • 您提出的解决方案与其他用户完全相同。发帖前请注意其他答案。
                                        • @walid_data 说这不是为了指出这可能是一个仅限 Windows 的问题吗?
                                        最近更新 更多