错误消息:“‘chromedriver’ 可执行文件需要在路径中可用”
- 2024-12-04 08:56:00
- admin 原创
- 181
问题描述:
我正在使用带有 python 的 selenium,并从此站点下载了适用于我的 Windows 计算机的 chromedriver:http://chromedriver.storage.googleapis.com/index.html ?path=2.15/
下载 zip 文件后,我将 zip 文件解压到我的下载文件夹中。然后我将可执行二进制文件的路径 (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
但是 - 如上所述 - 可执行文件在路径中......这里发生了什么?
解决方案 1:
我看到讨论仍然在谈论通过下载二进制文件并手动配置路径来设置 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 二进制文件。
解决方案 2:
您可以测试它是否确实在 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")
解决方案 3:
在Ubuntu上:
sudo apt install chromium-chromedriver
在Debian上:
sudo apt install chromium-driver
在macOS上安装Homebrew然后执行
brew install --cask chromedriver
解决方案 4:
对于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')
没有任何问题
解决方案 5:
与 pycharm 社区版的情况相同,因此,对于 cmd,您必须重新启动 ide 才能重新加载路径变量。重新启动 ide 应该没问题。
解决方案 6:
对于原始字符串,我们必须添加路径字符串,以r
字符串前面的字母开头。我测试了这种方法,它有效。
driver = webdriver.Chrome(r"C:/Users/michael/Downloads/chromedriver_win32/chromedriver.exe")
解决方案 7:
根据说明,您需要在实例化 webdriver.Chrome 时包含 ChromeDriver 的路径,例如:
driver = webdriver.Chrome('/path/to/chromedriver')
解决方案 8:
另一种方法是下载并解压 chromedriver,并将“ chromedriver.exe”放在C:\Program Files\Python38\Scripts中,然后您不需要提供驱动程序的路径,只需
驱动程序= webdriver.Chrome()
解决方案 9:
在将 chromedriver 添加到您的路径之前,请确保它与您的浏览器是相同的版本。
如果没有,您将需要匹配版本:更新/降级您的 chrome,以及升级/降级您的 webdriver。
我建议尽可能更新你的 chrome 版本,并匹配 webdriver。
要更新 Chrome:
点击右上角的三个点。
点击
help
->About Google Chrome
更新版本并重启 chrome
然后从这里下载兼容版本:http://chromedriver.chromium.org/downloads
。
注意:最新的 chromedriver 并不总是与最新版本的 chrome 匹配!
现在您可以将其添加到 PATH 中:
在计算机的某个位置创建一个新文件夹,用于放置 Web 驱动程序。我创建了一个
webdrivers
名为C:Program Files
复制文件夹路径。我的情况是
C:Program Fileswebdrivers
右击
this PC
->properties
:
右键单击
Advanced System settings
点击
Environment Variables
在 中
System variables
,点击path
并点击edit
点击
new
粘贴之前复制的路径
在所有窗口中单击“确定”
就是这样!我用的是 pycharm,但不得不重新打开它。也许其他 IDE 或终端也一样。
解决方案 10:
最好的方法肯定是在这里:
下载并解压 chromedriver,将 chromedriver.exe 放在 C:\Python27\Scripts 中,然后您不需要提供驱动程序的路径,只需
driver= webdriver.Chrome()
您已完成,无需添加路径或任何内容
解决方案 11:
可执行路径已被弃用!
如果您收到 exectuable_path 已被弃用的警告,这里是修复方法...
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
def run():
s=Service(ChromeDriverManager().install())
chrome_driver = webdriver.Chrome(service=s)
...
解决方案 12:
为避免对此主题的未来读者提供一些额外的输入/澄清,以避免修改 PATH 环境变量。在 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:Folderofyourchoice';
from selenium import webdriver;
browser = webdriver.Chrome();
browser.get('http://localhost:8000')
assert 'Django' in browser.title
注意:(1)示例代码(在参考答案中)可能需要大约 5 秒钟才能打开指定 URL 的 Firefox 浏览器。 (2)如果指定的 URL 上没有服务器正在运行,或者没有提供标题包含字符串“Django”的页面,则 Python 控制台将显示以下错误:assert 'Django' in browser.title AssertionError
解决方案 13:
v4.6.0
对于使用 Selenium或更高版本的用户:
我们不必driver.exe
再担心下载和设置任何路径。也不必使用第三方库来WebDriverManager
处理浏览器驱动程序。
Selenium 的新工具SeleniumManger
可以为我们自动下载/处理浏览器驱动程序。
现在你的 Python 代码可以简单到:
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://www.google.com")
参考:
https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location/
Selenium Manager 简介
解决方案 14:
解压 chromedriver 时,请指定一个准确的位置,以便您稍后可以跟踪它。下面,您将获得适合您操作系统的 chromedriver,然后将其解压到一个准确的位置,该位置稍后可以在您的代码中作为参数提供。
`wget http://chromedriver.storage.googleapis.com/2.10/chromedriver_linux64.zip
unzip chromedriver_linux64.zip -d /home/virtualenv/python2.7.9/`
解决方案 15:
如果您正在使用 Robot Framework RIDE。那么您可以Chromedriver.exe
从其官方网站下载并将此 .exe 文件保存在C:Python27Scripts
目录中。现在将此路径作为您的环境变量,例如C:Python27Scriptschromedriver.exe
。
重启电脑并再次运行相同的测试用例。您将不会再遇到此问题。
解决方案 16:
正如Aphid在他的评论中提到的,如果您想手动执行此操作,则只需包含存储 webdriver 的目录,而不是可执行文件:
例子:
正确的:
PATH=$PATH:/路径/到/webdriver/文件夹
错误的:
PATH=$PATH:/path/to/webdriver/chromedriver.exe
Windows系统变量和CMD测试:
解决方案 17:
从最近的版本开始,创建 chromedriver 的首选方法是使用服务。
像这样手动设置你的路径:
chromedriver_path = "path to your chromedriver executable>"
service = Service(chromedriver_path)
driver = webdriver.Chrome(service=service)
解决方案 18:
如果在确定 PATH 设置正确后它不起作用,可以尝试重新启动计算机。
在我使用 Windows 7 的情况下,我总是收到 WebDriverException 错误:消息:针对 chromedriver、gecodriver、IEDriverServer。我很确定我有正确的路径。重启电脑,一切正常
解决方案 19:
我遇到了和你一样的问题。我使用 PyCharm 编写程序,我认为问题出在 PyCharm 中的环境设置上,而不是操作系统上。我通过转到脚本配置,然后手动编辑环境变量中的 PATH 解决了这个问题。希望这对你有帮助!
解决方案 20:
当我下载 chromedriver.exe 时,我只是将其移动到 PATH 文件夹 C:\Windows\System32\chromedriver.exe 中,但遇到了完全相同的问题。
对我来说,解决方案就是更改 PATH 中的文件夹,因此我只是将其移动到同样位于 PATH 中的 Pycharm Community bin 文件夹中。例如:
C:\Windows\System32\chromedriver.exe --> 出现异常
C:\Program Files\JetBrains\PyCharm Community Edition 2019.1.3\bin\chromedriver.exe --> 运行正常
解决方案 21:
在 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`
用编辑器打开~/.bash_profile
并添加:
export PATH="$HOME/chromedriver:$PATH"
打开新的终端窗口,好了