错误消息:“'chromedriver' 可执行文件需要在路径中可用”

Error message: "'chromedriver' executable needs to be available in the path"

提问人:steady_progress 提问时间:4/25/2015 最后编辑:Super Kai - Kazuya Itosteady_progress 更新时间:9/10/2023 访问量:863167

问:

我正在将硒与 python 一起使用,并已从此站点下载了适用于我的 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

但是 - 如上所述 - 可执行文件在路径中(!这是怎么回事?

python google-chrome selenium-chromedriver webdriver

评论

57赞 Malik Brahimi 4/25/2015
尝试将 复制到与 Python 脚本相同的目录中。chromedriver.exe
10赞 WhatIsHeDoing 11/25/2017
通过 Chocolatey 安装会将其添加到路径 .choco install chromedriver
3赞 Charles Chow 9/26/2019
对于用户在 pycharm 中遇到此问题,重启将解决它
2赞 user2720864 3/24/2020
@MalikBrahimi我一直在到处寻找这个解决方案,但在我找到您的评论之前,它们都没有真正起作用。多谢
2赞 Pineda 12/10/2019
我同意ImNt的回答。虽然我想为那些使用 virtualenv 的人补充一点,但您应该以管理员身份在 venv 文件中运行 python,使用以下示例格式:driver = webdriver。Chrome(r'C:/用户/michael/Downloads/chromedriver_win32/chromedriver.exe')

答:

301赞 lmNt 4/25/2015 #1

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

或者,您可以使用指向 chromedriver 的直接路径,如下所示:

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

因此,在您的具体情况下:

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

评论

4赞 steady_progress 4/25/2015
感谢您的回答:“启动ChromeDriver 2.15.322448”确实出现了。“只允许本地连接”也出现了。...但我想这没关系吗?....我想知道的一件事是:在网站上只有 32 位版本的 chromedriver 可用......但这应该适用于我的 64 位 Windows,不是吗?
0赞 lmNt 4/25/2015
@steady_progress是的,没关系。这将适用于 64 位 Windows;我自己在使用它。我怀疑也许硒版本可能会导致问题?你安装了哪一个?您是否使用?pip
7赞 Aphid 1/3/2018
将 Web 驱动程序添加到 PATH 时,无论操作系统如何,都只能包含存储 Web 驱动程序的目录,而不是可执行文件。示例:PATH=$PATH:/path/to/webdriver/folder,而不是 PATH=$PATH:/path/to/webdriver/chromedriver。此外,使用 PATH 比将位置传递到 Web 驱动程序更具可移植性。Chrome() 调用,因为我们始终可以假设 PATH 在运行代码的任何地方都正确设置,但我们不能假设它们的文件结构设置相同。
1赞 3141 7/20/2018
嘿,steady_progress。我也处于类似的情况,但对我来说,@lmNt的答案不起作用。我似乎也无法成功编辑我的 PATH 变量。有人有什么建议吗?
4赞 Yogesh Awdhut Gadade 6/3/2019
尝试使用相同的解决方案,但出现此错误:WebDriverException:消息:“chromedriver.exe”可执行文件可能具有错误的权限。请看 sites.google.com/a/chromium.org/chromedriver/home
16赞 Andrea Bisello 12/14/2015 #2

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

评论

2赞 DollarAkshay 7/1/2016
谢谢。我在 Visual Studios 中遇到了同样的问题。刚刚重新启动IDE并工作:)谢谢
0赞 Vidar 10/13/2021
我重新启动了 PyCharm....它就像一个魅力:) - 我不知道我的 IDE 必须重新启动才能获取更新的环境变量。
2赞 Harshdeep Singh 10/1/2016 #3

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

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

评论

3赞 Jeppe 2/10/2019
或全局安装。/usr/local/bin/
1赞 learningBunny 7/17/2017 #4

如果在您确定PATH设置正确后无法正常工作,可以尝试重新启动计算机。

就我在 Windows 7 上的情况而言,我总是在 WebDriverException 上收到错误:消息:对于 chromedriver、gecodriver、IEDriverServer。我很确定我有正确的道路。重新启动计算机,一切正常

11赞 James0007 10/12/2017 #5

对于原始字符串,我们必须添加路径字符串,从字符串前面的字母开始。我以这种方式进行了测试,它有效。r

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

评论

0赞 Palani P 10/27/2022
经过长时间的搜索,它会有所帮助
2赞 Rahul Tiwari 1/15/2018 #6

如果您正在使用机器人框架 RIDE。然后,您可以从其官方网站下载并将此.exe文件保存在目录中。现在将此路径作为您的环境变量提及,例如。.Chromedriver.exeC:\Python27\ScriptsC:\Python27\Scripts\chromedriver.exe

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

3赞 Snidhi Sofpro 4/16/2018 #7

为本线程的未来读者提供一些额外的输入/说明, 以避免修改 PATH 环境。变量,然后重新启动 Windows 系统: (我在 https://stackoverflow.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' 断言错误

0赞 Hamid 5/17/2018 #8

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

8赞 AnnaSummerShine 7/9/2018 #9

根据说明,您需要在实例化 webdriver 时包含 ChromeDriver 的路径。Chrome 例如:

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

评论

0赞 Silas S. Brown 1/10/2020
如果将这些说明向右滚动,则会显示一条注释,指出“可选参数,如果未指定,将搜索路径。但至少某些版本的 webdriver 似乎会检查他们在路径中找到的任何 chromedriver,如果它对它不满意(错误的版本等),它不会使用它(除非通过设置此参数强制尝试)。它会继续搜索更好的版本,如果找不到,就会抱怨。(“未找到合适的 chromedriver”会比“未找到 chromedriver”更好的消息。
460赞 Navarasu 10/19/2018 #10

我看到讨论仍然在谈论通过下载二进制文件并手动配置路径来设置 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 二进制文件。

评论

2赞 Azy Sır 2/19/2019
@Navarasu恕我直言,当电流为 3.7 时,为什么有人会遵循 3.6 的东西。下次明确地说它是 3.6 ....谢谢
3赞 IBRAHIM 6/29/2020
这个解决方案的好处是它比其他基于特定路径设置的解决方案具有更大的灵活性,我认为这在多台机器上使用脚本是不切实际的。
10赞 jeppoo1 10/2/2020
我正在 Azure Databricks 中尝试这个,它向我抛出这个错误。我该怎么办?ValueError: Could not get version for Chrome with this command: google-chrome --version || google-chrome-stable --version
1赞 Renato Francia 1/19/2021
这很酷!比我使用的 PATH 好多了
2赞 D.L 8/16/2023
这不再有效(截至 2023 年)。这是新的解决方案:stackoverflow.com/questions/75281458/...
0赞 Rafał 1/15/2019 #11

如果您使用的是远程解释器,您还必须检查是否定义了其可执行 PATH。就我而言,从远程 Docker 解释器切换到本地解释器解决了这个问题。

0赞 ChandyShot 3/7/2019 #12

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

6赞 Alon Gouldman 3/15/2019 #13

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

如果没有,您将需要匹配版本:更新/降级您的 chrome,以及升级/降级您的 webdriver。

我建议尽可能多地更新您的 chrome 版本,并匹配网络驱动程序。

要更新 chrome:

  • 在右上角,单击三个点。
  • 点击help -> About Google Chrome
  • 更新版本并重新启动 Chrome

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

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

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

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

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

  3. 右键单击 -> :this PCproperties

enter image description here

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

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

1赞 sia1998 7/15/2019 #14

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

评论

0赞 sia1998 7/16/2019
另一种选择是将 Chromedriver 直接移动到 /usr/local/bin,这样您就根本不需要添加路径了
0赞 Suguresh Soppimath 7/29/2019 #15

在此处添加 webdriver(chromedriver,.exe 或 geckodriver,.exe)。 这在我的情况下奏效了

0赞 user10705083 7/29/2019 #16

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

1赞 Denis Imamovic 8/9/2019 #17

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

对我来说,解决方案是只更改 PATH 中的文件夹,所以我只是将其移动到同样在 PATH 中的 Pycharm 社区垃圾箱文件夹中。 前任:

  • C:\Windows\System32\chromedriver.exe -->给了我异常
  • C:\Program Files\JetBrains\PyCharm 社区版 2019.1.3\bin\chromedriver.exe -->工作正常
69赞 user3064538 10/15/2019 #18

Ubuntu 上:

sudo apt install chromium-chromedriver

Debian 上:

sudo apt install chromium-driver

macOS上,安装Homebrew,然后执行

brew install --cask chromedriver

评论

1赞 alchemy 4/15/2020
然后使用:driver = webdriver。Chrome('/usr/lib/chromium-browser/chromedriver') ..无需更改$PATH
1赞 4/15/2020
@alchemy你确定需要这样做吗?我记得,对我来说效果很好。driver = webdriver.Chrome()
0赞 alchemy 4/15/2020
嗨鲍里斯,是的,不知道为什么..即使在添加到PATH之后,如果没有它,它也无法工作。我确定正确设置路径会更好,但我只需要快速使用 Chromedriver 做一件事
0赞 ira 11/2/2022
上面试过,出现错误 从 chrome 位置 /snap/chromium/2168/usr/lib/chromium-browser/chrome 启动的进程不再运行,因此 ChromeDriver 假设 Chrome 已崩溃。你的建议是你如何解决这个问题?我已经为此头痛了 5 天
1赞 sampoh 10/17/2019 #19

运行机器人测试框架和 Chrome 77 的 Mac Mojave 遇到了这个问题。这解决了问题。感谢@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 🎉

0赞 Silas S. Brown 1/10/2020 #20

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

pip install -U selenium

将 Webdriver 升级到 3.14.1。

5赞 Nirupam Kapoor 2/5/2020 #21

最好的方法肯定是在这里:

下载并解压缩 chromedriver 并将“chromedriver.exe”放在 C:\Python27\Scripts 中,然后您无需提供驱动程序的路径,只需

driver= webdriver.Chrome()

您无需添加路径或任何东西即可完成

20赞 Giorgos Myrianthous 5/4/2020 #22

适用于 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')

没有任何问题

7赞 Praveen Kumar C 11/11/2020 #23

另一种方法是下载并解压缩 chromedriver 并将“chromedriver.exe”放在 C:\Program Files\Python38\Scripts 中,然后您不需要提供驱动程序的路径,只需

driver= web驱动程序。铬()

2赞 Rene 3/5/2021 #24

正如 Aphid 在他的评论中提到的,如果你想手动完成,你必须只包含存储 webdriver 的目录而不是可执行文件

例:

右:

PATH=$PATH:/path/to/webdriver/folder

错:

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


Windows 系统变量和 CMD 测试:

enter image description here

5赞 enjoi4life411 10/26/2021 #25

可执行路径已弃用!

如果您收到“exectuable_path已被弃用”警告,这是修复程序...

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

评论

0赞 Zenahr 4/25/2022
在 Windows 上,此方法可生成json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
0赞 enjoi4life411 4/26/2022
@Zenahr我在 Windows 上运行。您是否安装了正确的软件包?此配置仍然适用于我
0赞 Ankita 5/18/2022
@Zenahr我遇到同样的错误,可以尝试在函数外部添加。这对我有用。driver = webdriver.Chrome(ChromeDriverManager().install())
0赞 Praveen Kumar 2/2/2022 #26

简单的解决方案是下载 chrome 驱动程序并移动 可执行文件复制到运行 Python 文件的文件夹中。

1赞 bujian 6/5/2022 #27

从最新版本开始,创建 chromedriver 的首选方法是使用服务。

手动设置路径,如下所示:

chromedriver_path = "path to your chromedriver executable>"

service = Service(chromedriver_path)
driver = webdriver.Chrome(service=service)
0赞 pensebien 7/15/2022 #28

测试后检查是否安装了 ChromeDriver

chromedriver

您应该看到

Starting ChromeDriver version.number 
ChromeDriver was successful

检查 ChromeDriver 路径的路径

which chromedriver

在代码中使用 Path

...
from selenium import webdriver

options = Options()
options.headless = True
options.add_argument('windows-size=1920x1080')

path   = '/usr/local/bin/chromedriver'
driver = webdriver.Chrome(path, options=options)
0赞 Arkadiusz Mazur 10/21/2022 #29

pip 安装 webdriver-manager

如果使用 python3 运行脚本:

pip3 安装 webdriver-manager

  • 然后在脚本中使用:
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(ChromeDriverManager().install())
2赞 Shawn 6/27/2023 #30

对于使用 Selenium v4.6.0 或更高版本的用户:

我们不必担心下载和设置任何路径。我们也不必使用第三方库来处理浏览器驱动程序。driver.exeWebDriverManager

Selenium的新工具可以自动为我们下载/处理浏览器驱动程序。SeleniumManger

现在,您的 Python 代码可以像以下简单一样简单:

from selenium import webdriver

driver = webdriver.Chrome()
driver.get("https://www.google.com")

引用: