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

我正在使用python和selenium,并已从此站点下载了用于我的windows计算机的chromedriver: http://chromedriver.storage.googleapis.com/index.html?path=2.15/

下载压缩文件后,我将压缩文件解压缩到我的下载文件夹中。然后我把可执行二进制文件(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

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

770363 次浏览

你可以测试它是否真的在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时,请指定一个确切的位置,以便以后可以跟踪它。下面,您将为您的操作系统获得正确的chromedriver,然后将其解压缩到一个确切的位置,这可以在稍后的代码中作为参数提供。

< p > <代码> wget http://chromedriver.storage.googleapis.com/2.10/chromedriver_linux64.zip 解压chromedriver_linux64.zip -d /home/virtualenv/python2.7.9/ < /代码> < / p >

可以尝试重新启动计算机,如果它不工作后,你很确定的路径设置正确。

在我的情况下,在windows 7,我总是得到WebDriverException: Message: for 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

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

对于这个帖子的未来读者,一些额外的输入/澄清, 以避免修补PATH环境。变量在Windows级别和重新启动Windows系统: (拷贝我的答案从https://stackoverflow.com/a/49851498/9083077适用于Chrome):

(1)下载chromedriver(如本线程前面所述),并将(解压缩)chromedriver.exe放在X:\文件夹\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
< p >指出: (1)示例代码(在参考答案中)可能需要大约5秒钟才能打开指定url的Firefox浏览器。 (2)如果没有服务器在指定的url上运行,或者没有包含字符串'Django'的页面,python控制台将显示以下错误: 在browser.title中断言“Django” AssertionError < / p >

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

根据指令,当实例化webdriver时,你需要包含到ChromeDriver的路径。如铬。

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

(Mac用户) 我也有同样的问题,但我用这个简单的方法解决了: 你必须把你的chromedriver.exe和你执行的脚本放在同一个文件夹里,然后在pyhton中写这个指令:

进口操作系统

操作系统。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二进制文件。

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

检查你的chrome驱动程序的路径,它可能不会从那里得到它。 简单地复制粘贴驱动程序的位置到代码中

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

如果不是,你需要匹配版本:更新/降级你的chrome浏览器,升级/降级你的webdriver。

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

更新chrome浏览器:

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

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

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

现在你可以把它添加到PATH:

    在你电脑的某个地方创建一个新文件夹,在那里你将放置你的网络驱动程序。 我在C:\Program Files

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

  2. 右键单击this PC -> properties:

enter image description here

  1. 在右边单击Advanced System settings
  2. 单击Environment Variables
  3. System variables中,单击path,然后单击edit
  4. 单击new
  5. 粘贴之前复制的路径
  6. 在所有窗口上单击OK

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

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

在这里添加webdriver(chromedriver.exe或geckodriver.exe) 这在我的案例中是有效的

最好的方法可能是获取当前目录,并将剩余的地址附加到它。 比如下面的代码(windows上的Word。在linux上,你可以使用line pwd): Webdriveraddress = str(os.popen("cd").read()。替换(“\ n ", ''))+'\ 路径\ \ webdriver ' < /代码> < / p >

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

对我来说,解决方案是只改变PATH中的文件夹,所以我只是在Pycharm Community bin文件夹中移动它,这也是在PATH中。 例:< / p >
  • C:\Windows\System32\chromedriver.exe——>给我一个异常
  • C:\Program Files\JetBrains\PyCharm Community Edition 2019.1.3\bin\chromedriver.exe—>工作正常
  • .exe

Ubuntu:

sudo apt install chromium-chromedriver

Debian:

sudo apt install chromium-driver

macOS上安装家酿,然后执行

brew install --cask chromedriver

在Mac Mojave运行Robot测试框架和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
    • 李< / ul > < / >

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

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

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

我在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中,然后你不需要提供驱动程序的路径,只需

司机= webdriver.Chrome ()

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

例子:

正确的:

= $ PATH: / / webdriver /文件夹/路径

错误的:

= $ PATH: /道路/ / webdriver / chromedriver.exe


Windows系统变量和CMD测试:

enter image description here

MAC用户:

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

2.在终端输入“sudo nano /etc/path &”;

3.添加一行和路径到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)
...
简单的解决方案是下载chrome驱动程序并移动

. exe文件

在最近的版本中,创建chromedriver的首选方式是使用服务。

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

chromedriver_path = "path to your chromedriver executable>"


service = Service(chromedriver_path)
driver = webdriver.Chrome(service=service)

测试后检查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)

PIP安装webdriver-manager

如果使用python3运行脚本:

安装webdriver-manager

  • 然后在脚本中请使用:
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(ChromeDriverManager().install())