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

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

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

  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


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

评论

尝试将chromedriver.exe复制到与Python脚本相同的目录中。

通过Chocolatey安装会将其添加到路径中,choco install chromedriver。

对于用户在pycharm中遇到此问题,重新启动即可解决

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

@MalikBrahimi我一直在到处搜索此解决方案,直到找到您的评论之前,它们都没有真正起作用。非常感谢

#1 楼

您可以测试它是否确实在PATH中,如果打开cmd并键入chromedriver(假设您的chromedriver可执行文件仍以此命名),然后按Enter。如果出现Starting ChromeDriver 2.15.322448,则说明PATH设置正确,并且出了点问题。

或者,您也可以使用指向chromedriver的直接路径,如下所示: />
在您的特定情况下:

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


评论


感谢您的回答:确实出现了“正在启动ChromeDriver 2.15.322448”。 “仅允许本地连接。”也出现了。 ...但是我想这可以吗? ....我想知道的是:网站上只有chromedriver的32位版本可用....但这在我的64位Windows上应该可以正常工作,不是吗?

–steady_progress
15年4月24日在23:02

@steady_progress是的,没关系。这将适用于64位Windows。我自己用的。我怀疑硒版本可能引起此问题?您安装了哪一个?您是否使用pip安装了它?

–lmNt
2015年4月24日23:07



如我在答案中提到的那样,在调用webdriver时是否尝试过使用驱动程序的直接路径?它是否因相同的错误而失败?

–lmNt
15年4月24日在23:15

将Webdriver添加到PATH时,无论使用哪种操作系统,都仅包含Webdriver的存储目录,而不包括可执行文件。例如:PATH = $ PATH:/ path / to / webdriver / folder,而不是PATH = $ PATH:/ path / to / webdriver / chromedriver。此外,使用PATH比将位置传递到webdriver.Chrome()调用更具可移植性,因为我们始终可以假设在运行代码的任何位置都正确设置了PATH,但是我们不能假设它们的文件结构设置相同。

–蚜虫
18年1月2日在18:28



尝试使用相同的解决方案,但出现此错误:WebDriverException:消息:“ chromedriver.exe”可执行文件可能具有错误的权限。请参阅sites.google.com/a/chromium.org/chromedriver/home

–约格什
19年6月3日在9:45

#2 楼

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

这可以使用webdriver-manager

pip install webdriver-manager
自动完成

现在问题中的上述代码仅需进行以下更改即可使用,

即二进制文件。

评论


@Navarasu,在所有适当的尊重下,为什么当当前值为3.7时,有人会跟随3.6的内容。下次最好明确地指出它适用于3.6 ....谢谢

– AzySır
19-2-18在23:33



这很棒,因为它也保持最新

–莱斯利·奥尔德里奇(Leslie Alldridge)
19年6月18日在17:59

该解决方案的优点是,它比基于特定路径设置的其他解决方案具有更大的灵活性,对于在多台计算机上使用脚本而言,我认为这是不切实际的。

– IBRAHIM
6月28日20:40

我在Azure Databricks中尝试此操作,并引发以下错误ValueError:无法使用以下命令获得Chrome的版本:google-chrome --version || google-chrome-stable --version。我该怎么办?

–jeppoo1
10月2日,11:34



非常感谢@Navarasu,您救了我的命!

–伊凡·乌萨尔科(Ivan Usalko)
12月5日0:00

#3 楼

在Ubuntu上:
sudo apt install chromium-chromedriver

在Debian上:
sudo apt install chromium-driver

在macOS上,安装https://brew.sh/然后执行
brew cask install chromedriver


评论


然后使用:driver = webdriver.Chrome('/ usr / lib / chromium-browser / chromedriver')..而不更改$ PATH

–炼金术
4月14日22:44

@alchemy您确定需要这样做吗?我记得,driver = webdriver.Chrome()对我来说很好用。

–鲍里斯(Boris)
4月14日22:45



嗨,鲍里斯,是的,不确定为什么。即使没有添加到PATH,它也无法正常工作。我确定正确设置路径会更好,但是我只需要快速使用Chromedriver做一件事

–炼金术
4月14日22:51

#4 楼

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

评论


谢谢。我在Visual Studios中遇到了同样的问题。刚刚重新启动IDE,它的工作:)谢谢

–DollarAkshay
16年7月1日在10:53

#5 楼

对于原始字符串,我们必须添加路径字符串,以字符串前面的字母r开头。我以这种方式进行了测试,并且可以正常工作。

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


#6 楼

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

没有任何问题

评论


明确指出他正在使用Windows,这是针对Linux的。

– misantroop
5月14日2:58



@misantroop我已经更新了我的答案以使其更清楚。

– Giorgos Myrianthous
5月14日13:57

#7 楼

为以后的该线程的读者提供一些额外的输入/说明,以避免修改PATH env。 Windows级别的变量并重新启动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秒钟才能打开Firefox浏览器以指定的URL。
(2)如果没有服务器已在指定的url上运行或提供标题为字符串'Django'的页面,则python控制台将显示以下错误:
在浏览器中声明'Django'。标题
AssertionError

#8 楼

最好的确定方法是:

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

driver= webdriver.Chrome()


您无需添加路径或其他任何操作

#9 楼

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

评论


或到/ usr / local / bin /进行全局安装。

–杰普
19年10月10日在11:41

#10 楼

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

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

#11 楼

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

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


评论


如果将这些说明向右滚动,则会出现一条注释,指出“可选参数,如果未指定,将搜索路径”。但是至少某些版本的webdriver似乎会检查他们在路径中找到的任何chromedriver,并且如果对它不满意(错误的版本等),它将不会使用它(除非通过设置此参数而被迫尝试)。它会一直在寻找更好版本的路径,如果找不到它,则会抱怨。 (“找不到合适的chromedriver”比“找不到合适的chromedriver”更好。)

–西拉斯·布朗(Silas S. Brown)
1月9日20:17

#12 楼

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

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

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

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


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

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


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

现在您可以将其添加到PATH中: br />在计算机上的某个位置创建一个新文件夹,您将在其中放置Web驱动程序。
我在webdrivers中创建了一个名为C:\Program Files的文件夹
复制文件夹路径。就我而言,是C:\Program Files\webdrivers
右键单击this PC-> properties




右键单击Advanced System settings

单击Environment Variables

System variables中,单击path并单击edit

单击new

粘贴之前复制的路径
单击在所有窗口上都可以,

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

#13 楼

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

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

#14 楼

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

#15 楼

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

#16 楼

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

评论


另一个选择是将您的chromedriver直接移动到/ usr / local / bin,那么您根本不用添加任何路径

–sia1998
19年7月16日在14:06



#17 楼

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

#18 楼

最好的方法可能是获取当前目录并将剩余地址附加到该目录。
类似于此代码(在Windows上为Word。在Linux上,您可以使用pwd行):
webdriveraddress = str(os.popen("cd").read().replace("\n", ''))+'\path\to\webdriver'

#19 楼

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

对我来说,解决方案是只更改PATH中的文件夹,所以我将其移到了PATH中也位于Pycharm社区的bin文件夹中。
例如:


C:\Windows\System32\chromedriver.exe->给我例外
C:\ Program Files \ JetBrains \ PyCharm社区版
2019.1.3 \ bin \ chromedriver.exe->工作正常


#20 楼

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'



我现在获得了最新的下载链接


下载并将chromedriver解压缩到您想要的位置
例如:~/chromedriver/chromedriver




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

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


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

#21 楼

我在Webdriver 3.8.0(Chrome 73.0.3683.103和ChromeDriver 73.0.3683.68)上遇到了这个问题。在我将Webdriver升级到3.14.1后,问题消失了。

pip install -U selenium



#22 楼

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

#23 楼

另一种方法是下载并解压缩chromedriver,然后将“ chromedriver.exe”放入C:\ Program Files \ Python38 \ Scripts,然后您无需提供驱动程序的路径,只需
driver = webdriver.Chrome()

#24 楼

对于Mac OS X用户
    brew tap homebrew/cask
    brew cask install chromedriver



评论


在这里已经回答了

– Gino Mempin
8月12日0:39

#25 楼

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

导入os


评论


您提出的解决方案与其他用户之一完全相同。发布前,请注意其他答案。

– Nikita Kniazev
18年7月16日在14:28

@walid_data并不是说这可能只是Windows问题吗?

– Benc
19年1月14日在21:49