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的路径,如下所示:
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,应该没问题。
对于原始字符串,我们必须添加路径字符串,在字符串之前以字母
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驱动程序。
我在
复制文件夹路径。在我的情况下是
右键单击
而已!我用了pycharm,不得不重新打开它。也许与其他IDE或终端相同。
解压缩chromedriver时,请务必指定确切位置,以便以后进行跟踪。在下面,您将为您的操作系统找到合适的chromedriver,然后将其解压缩到确切的位置,稍后可以在代码中将其作为参数提供。
unzip chromedriver_linux64.zip -d /home/virtualenv/python2.7.9/
如果您正在使用机器人框架RIDE。然后,您可以从其官方网站下载
重新启动计算机,然后再次运行相同的测试用例。您不会再遇到此问题。
根据说明,您在实例化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
用编辑器打开
1 | export PATH="$HOME/chromedriver:$PATH" |
打开新的终端窗口,ta-da ??
(对于Mac用户)
我有同样的问题,但我通过以下简单方法解决了:
您必须将chromedriver.exe放在执行脚本的同一文件夹中,然后在pyhton中编写以下指令:
导入操作系统
os.environ [" PATH"] + = os.pathsep + r'X:/您的/文件夹/脚本/'