关于python:错误消息:“’chromedriver’可执行文件必须在路径中可用”

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

我正在将硒与python结合使用,并已从以下网站下载了适用于Windows计算机的chromedriver:http://chromedriver.storage.googleapis.com/index.html?path=2.15/

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

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

1
2
3
  from selenium import webdriver

  driver = webdriver.Chrome()

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

1
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的路径,如下所示:

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

因此,在您的特定情况下:

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


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

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

1
pip install webdriver-manager

现在,问题中的上述代码将可以简单地与以下更改一起使用,

1
2
3
4
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager

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

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


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


对于原始字符串,我们必须添加路径字符串,在字符串之前以字母r开头。我以这种方式进行了测试,并且有效。

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


一些额外的输入/说明,供以后学习该主题的读者使用,
避免修改PATH env。 Windows级别的变量,然后重新启动Windows系统:
(适用于Chrome的https://stackoverflow.com/a/49851498/9083077的答案副本):

(1)下载chromedriver(如本主题前面所述),然后将(解压缩后的)chromedriver.exe放在X: Folder of your choice中

(2)Python代码示例:

1
2
3
4
5
6
7
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秒钟打开Firefox浏览器以指定的URL。
(2)如果尚无服务器在指定的url上运行或提供标题为字符串'Django'的页面,则python控制台将显示以下错误:
在browser.title中声明'Django'
断言错误


1
sudo apt install chromium-chromedriver

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

如果不是,则需要匹配版本:更新/降级chrome,以及升级/降级webdriver。

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

要更新Chrome:

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

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

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

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

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

  • 复制文件夹路径。在我的情况下是C:\Program Files\webdrivers

  • 右键单击this PC-> properties

  • enter image description here

  • 在右侧单击Advanced System settings
  • 点击Environment Variables
  • System variables中,单击path,然后单击edit
  • 点击new
  • 粘贴您之前复制的路径
  • 在所有窗口上单击确定
  • 而已!我用了pycharm,不得不重新打开它。也许与其他IDE或终端相同。


    解压缩chromedriver时,请务必指定确切位置,以便以后进行跟踪。在下面,您将为您的操作系统找到合适的chromedriver,然后将其解压缩到确切的位置,稍后可以在代码中将其作为参数提供。

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


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

    重新启动计算机,然后再次运行相同的测试用例。您不会再遇到此问题。


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

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

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

    在Windows 7上,我总是在WebDriverException上出现错误:消息:对于chromedriver,gecodriver,IEDriverServer。我很确定我有正确的路径。重新启动计算机,所有工作


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


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


    我同意ImNt的回答。尽管我想为那些使用virtualenv的人添加它,但是您应该使用以下示例格式以管理员身份在venv文件中运行python:
    驱动程序= webdriver.Chrome(r'C:/Users/michael/Downloads/chromedriver_win32/chromedriver.exe')


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


    我遇到了与您相同的问题。
    我正在使用PyCharm编写程序,并且我认为问题出在PyCharm中而不是OS中。
    我解决了该问题,方法是进行脚本配置,然后手动编辑环境变量中的PATH。
    希望对您有所帮助!


    在C: Windows处添加webdriver(chromedriver.exe或geckodriver.exe)。
    这对我来说很有效


    最好的方法可能是获取当前目录并将剩余地址附加到该目录。
    像这样的代码(Windows上的Word。在Linux上,您可以使用pwd行):

    webdriveraddress = str(os.popen("cd").read().replace("
    ", ''))+'\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->运行正常


    Mac Mojave运行机器人测试框架和Chrome 77时出现了此问题。这解决了问题。感谢@Navarasu将我指向正确的轨道。

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

    接下来,在python提示符下:

    1
    2
    3
    4
    5
    from selenium import webdriver
    from webdriver_manager.chrome import ChromeDriverManager
    driver = webdriver.Chrome(ChromeDriverManager().install())

    # ctrl+d to exit

    这导致以下错误:

    1
    2
    3
    4
    5
    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并添加:

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

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


    (对于Mac用户)
    我有同样的问题,但我通过以下简单方法解决了:
    您必须将chromedriver.exe放在执行脚本的同一文件夹中,然后在pyhton中编写以下指令:

    导入操作系统

    os.environ [" PATH"] + = os.pathsep + r'X:/您的/文件夹/脚本/'