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

Python 错误消息:"';chromedriver';可执行文件需要在路径“中可用”;,python,selenium,selenium-chromedriver,Python,Selenium,Selenium Chromedriver,我正在将selenium与python结合使用,并已从以下网站下载了windows计算机的chromedriver: 下载zip文件后,我将zip文件解压缩到我的下载文件夹中。然后我将可执行二进制文件(C:\Users\michael\Downloads\chromedriver\u win32)的路径放入环境变量“path”中 但是,当我运行以下代码时: from selenium import webdriver driver = webdriver.Chrome() 。。。我一

我正在将selenium与python结合使用,并已从以下网站下载了windows计算机的chromedriver:

下载zip文件后,我将zip文件解压缩到我的下载文件夹中。然后我将可执行二进制文件(C:\Users\michael\Downloads\chromedriver\u 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

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

如果打开cmd并键入
chromedriver
(假设chromedriver可执行文件的名称仍然是这样),然后按Enter键,则可以测试它是否确实在路径中。如果出现
启动ChromeDriver 2.15.322448
,则路径设置正确,并且存在其他问题

或者,您可以使用直接路径连接到chromedriver,如下所示:

 driver = webdriver.Chrome('/path/to/chromedriver') 
因此,在您的具体案例中:

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

pycharm community edition的情况也一样,因此,对于cmd,必须重新启动ide才能重新加载路径变量。重新启动ide,一切正常。

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

wgethttp://chromedriver.storage.googleapis.com/2.10/chromedriver_linux64.zip
解压chromedriver_linux64.zip-d/home/virtualenv/python2.7.9/

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


就我在Windows7上的情况而言,我总是在WebDriverException上收到错误消息:对于chromedriver、gecodriver、IEDriverServer。我确信我有正确的道路。重新启动计算机,所有工作

我们必须添加路径字符串,以字符串前面的字母
r
开始,作为原始字符串。我用这种方法进行了测试,它是有效的

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

如果您使用的是robot framework RIDE。然后您可以从Chromedriver.exe的官方网站下载
Chromedriver.exe
,并将该.exe文件保存在
C:\Python27\Scripts
目录中。现在将此路径作为环境变量,例如
C:\Python27\Scripts\chromedriver.exe


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

为本帖的未来读者提供一些额外的输入/说明, 避免修补路径环境。Windows级别的变量并重新启动Windows系统: (适用于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可用性的路径中

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

driver = webdriver.Chrome('/path/to/chromedriver')
(适用于Mac用户) 我也有同样的问题,但我用一种简单的方法解决了: 您必须将chromedriver.exe放在执行脚本的同一文件夹中,然后在pyhton中编写以下指令:

导入操作系统


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

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

这可以使用

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

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager

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

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

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

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

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

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

我建议尽可能多地更新您的chrome版本,并与webdriver相匹配

要更新chrome,请执行以下操作:

  • 在右上角,单击三个点
  • 单击“帮助”->“关于谷歌浏览器”
  • 更新版本并重新启动chrome
然后从此处下载兼容版本: .

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

现在,您可以将其添加到路径:

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

  • 复制文件夹路径。在我的例子中,它是
    C:\ProgramFiles\webdrivers

  • 右键单击这台电脑->
    属性

  • 右键单击“高级系统设置”
  • 单击环境变量
  • 系统变量
    中,单击
    路径
    并单击
    编辑
  • 单击
    new
  • 粘贴之前复制的路径
  • 在所有窗口上单击“确定”
  • 就这样!I u
    from selenium import webdriver
    from webdriver_manager.chrome import ChromeDriverManager
    
    driver = webdriver.Chrome(ChromeDriverManager().install())
    
    sudo apt install chromium-chromedriver
    
    sudo apt install chromium-driver
    
    brew cask install chromedriver
    
    $ pip install webdriver-manager --user # install webdriver-manager lib for python
    $ python # open python prompt
    
    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'
    
    export PATH="$HOME/chromedriver:$PATH"
    
    pip install -U selenium
    
    driver= webdriver.Chrome()
    
    # 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
    
    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')
    
        brew tap homebrew/cask
        brew cask install chromedriver