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

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

我将 selenium 与 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

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

你可以测试它是否真的在 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")

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

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

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

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

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

我们必须添加路径字符串,以字符串前的字母 r 开头,用于原始字符串。我这样测试过,确实有效。

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

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

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

一些额外的 input/clarification 供此主题的未来读者使用, 避免修改 PATH 环境。 Windows 级别的变量并重新启动 Windows 系统: (我从 https://whosebug.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) 示例代码(在参考答案中)打开指定url的Firefox浏览器可能需要大约5秒。 (2) 如果在指定 url 处没有服务器已经 运行 或提供标题包含字符串 'Django' 的页面,python 控制台将显示以下错误: 在 browser.title 中断言 'Django' 断言错误

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

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

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

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

进口os

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

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

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

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

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

如果不是,您将需要匹配版本:update/downgrade 您 chrome 和 upgrade/downgrade 您的网络驱动程序。

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

待更新chrome:

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

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

注意:最新的 chrome 驱动程序并不总是与 chrome 的最新版本匹配!

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

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

  2. 中创建了一个名为 webdrivers 的文件夹
  3. 复制文件夹路径。在我的例子中是 C:\Program Files\webdrivers

  4. 右击 this PC -> properties:

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

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

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

在此处添加 webdriver(chromedriver.exe 或 geckodriver.exe) C:\Windows . 这在我的案例中有效

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

当我下载 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 --> 运行良好

Ubuntu:

sudo apt install chromium-chromedriver

Debian:

sudo apt install chromium-driver

macOS 上安装 Homebrew 然后执行

brew install --cask chromedriver

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'
  • 我现在下载了最新的 link
    • 下载并解压 chromedriver 到你想要的地方
    • 例如:~/chromedriver/chromedriver

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

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

打开新终端window,哒哒

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

pip install -U selenium

将 Webdriver 升级到 3.14.1。

确定的最佳方法在这里:

下载并解压chromedriver,将'chromedriver.exe'放在C:\Python27\Scripts即可,无需提供驱动路径,直接

driver= webdriver.Chrome()

您已完成,无需添加路径或任何东西

对于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')

没有任何问题

对于 mac osx 用户

    brew tap homebrew/cask
    brew cask install chromedriver

另一种方法是下载并解压 chromedriver 并将 'chromedriver.exe' 放入 C:\Program Files\Python38\Scripts 然后你不需要提供 driver 的路径,只需

driver=webdriver.Chrome()

Aphid mentioned in his 一样,如果您想手动执行此操作,则必须 仅包括存储您的网络驱动程序的目录而不是可执行文件:

示例:

右:

路径=$路径:/path/to/webdriver/folder

错误:

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


Windows系统变量和CMD测试:

MAC 位用户:

  1. 下载 Chromedriver:https://sites.google.com/a/chromium.org/chromedriver/downloads

2.In 终端类型“sudo nano /etc/paths”

3.Add 以 Cromedriver 路径为例的行:“/Users/username/Downloads”

  1. 再次尝试 运行 你的测试!

可执行路径已被弃用!

如果您收到 exectuable_path ash been 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)
    ...

The simple solution is that download the chrome driver and move the executable file to the folder from which you run the python file.