提问人:steady_progress 提问时间:4/25/2015 最后编辑:Super Kai - Kazuya Itosteady_progress 更新时间:9/10/2023 访问量:863167
错误消息:“'chromedriver' 可执行文件需要在路径中可用”
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)的路径放入环境变量“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
但是 - 如上所述 - 可执行文件在路径中(!这是怎么回事?
答:
您可以测试它是否真的在 PATH 中,如果您打开一个 cmd 并输入(假设您的 chromedriver 可执行文件仍然像这样命名)并按 Enter。如果出现,则 PATH 设置正确,并且有其他问题。chromedriver
Starting ChromeDriver 2.15.322448
或者,您可以使用指向 chromedriver 的直接路径,如下所示:
driver = webdriver.Chrome('/path/to/chromedriver')
因此,在您的具体情况下:
driver = webdriver.Chrome("C:/Users/michael/Downloads/chromedriver_win32/chromedriver.exe")
评论
pip
pycharm 社区版的情况相同,因此,对于 cmd,您必须重新启动 ide 才能重新加载路径变量。重新启动你的IDE,它应该没问题。
评论
解压缩 chromedriver 时,请指定一个确切的位置,以便以后可以跟踪它。下面,您将获得适合您操作系统的 chromedriver,然后将其解压缩到确切位置,该位置可以作为参数在以后的代码中提供。
wget http://chromedriver.storage.googleapis.com/2.10/chromedriver_linux64.zip
unzip chromedriver_linux64.zip -d /home/virtualenv/python2.7.9/
评论
/usr/local/bin/
如果在您确定PATH设置正确后无法正常工作,可以尝试重新启动计算机。
就我在 Windows 7 上的情况而言,我总是在 WebDriverException 上收到错误:消息:对于 chromedriver、gecodriver、IEDriverServer。我很确定我有正确的道路。重新启动计算机,一切正常
对于原始字符串,我们必须添加路径字符串,从字符串前面的字母开始。我以这种方式进行了测试,它有效。r
driver = webdriver.Chrome(r"C:/Users/michael/Downloads/chromedriver_win32/chromedriver.exe")
评论
如果您正在使用机器人框架 RIDE。然后,您可以从其官方网站下载并将此.exe文件保存在目录中。现在将此路径作为您的环境变量提及,例如。.Chromedriver.exe
C:\Python27\Scripts
C:\Python27\Scripts\chromedriver.exe
重新启动计算机并再次运行相同的测试用例。你不会再遇到这个问题了。
为本线程的未来读者提供一些额外的输入/说明, 以避免修改 PATH 环境。变量,然后重新启动 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 秒钟才能打开指定 url 的 Firefox 浏览器。 (2) 如果指定的 url 上没有服务器运行,或者没有服务器提供标题包含字符串“Django”的页面,则 python 控制台将显示以下错误: 在 browser.title 中断言 'Django' 断言错误
就我而言,当我将chromedriver文件复制到c:\Windows文件夹时,此错误消失了。这是因为 windows 目录位于 python 脚本检查 chromedriver 可用性的路径中。
根据说明,您需要在实例化 webdriver 时包含 ChromeDriver 的路径。Chrome 例如:
driver = webdriver.Chrome('/path/to/chromedriver')
评论
我看到讨论仍然在谈论通过下载二进制文件并手动配置路径来设置 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 二进制文件。
评论
ValueError: Could not get version for Chrome with this command: google-chrome --version || google-chrome-stable --version
如果您使用的是远程解释器,您还必须检查是否定义了其可执行 PATH。就我而言,从远程 Docker 解释器切换到本地解释器解决了这个问题。
检查您的 chrome 驱动程序的路径,它可能无法从那里获取它。 只需将驱动程序位置复制粘贴到代码中即可。
在将 chromedriver 添加到您的路径之前,请确保它与浏览器的版本相同。
如果没有,您将需要匹配版本:更新/降级您的 chrome,以及升级/降级您的 webdriver。
我建议尽可能多地更新您的 chrome 版本,并匹配网络驱动程序。
要更新 chrome:
- 在右上角,单击三个点。
- 点击
help
->About Google Chrome
- 更新版本并重新启动 Chrome
然后从这里下载兼容版本: http://chromedriver.chromium.org/downloads .
注意:最新的 chromedriver 并不总是与最新版本的 chrome 匹配!
现在,您可以将其添加到 PATH 中:
在计算机的某个位置创建一个新文件夹,您将在其中放置 Web 驱动程序。 我创建了一个名为
webdrivers
C:\Program Files
复制文件夹路径。就我而言,它是
C:\Program Files\webdrivers
右键单击 -> :
this PC
properties
- 在右键点击
Advanced System settings
- 点击
Environment Variables
- 在 中,单击并单击
System variables
path
edit
- 点击
new
- 粘贴您之前复制的路径
- 在所有窗口上单击“确定”
就是这样!我使用了pycharm,我不得不重新打开它。也许其他IDE或终端也是如此。
我遇到了和你一样的问题。 我正在使用 PyCharm 编写程序,我认为问题出在 PyCharm 中的环境设置而不是操作系统中。 我通过转到脚本配置,然后手动编辑环境变量中的PATH来解决这个问题。 希望这对你来说有用!
评论
在此处添加 webdriver(chromedriver,.exe 或 geckodriver,.exe)。 这在我的情况下奏效了
最好的方法可能是获取当前目录并将剩余的地址附加到其中。
像这个代码(Windows 上的 Word。在 linux 上,您可以使用 line pwd 之类的东西):
webdriveraddress = str(os.popen("cd").read().replace("\n", ''))+'\path\to\webdriver'
当我下载 chromedriver.exe 时,我只是将其移动到 PATH 文件夹 C:\Windows\System32\chromedriver.exe 中,并且遇到了完全相同的问题。
对我来说,解决方案是只更改 PATH 中的文件夹,所以我只是将其移动到同样在 PATH 中的 Pycharm 社区垃圾箱文件夹中。 前任:
- C:\Windows\System32\chromedriver.exe -->给了我异常
- C:\Program Files\JetBrains\PyCharm 社区版 2019.1.3\bin\chromedriver.exe -->工作正常
在 Ubuntu 上:
sudo apt install chromium-chromedriver
在 Debian 上:
sudo apt install chromium-driver
在macOS上,安装Homebrew,然后执行
brew install --cask chromedriver
评论
driver = webdriver.Chrome()
运行机器人测试框架和 Chrome 77 的 Mac Mojave 遇到了这个问题。这解决了问题。感谢@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 🎉
我在 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')
没有任何问题
另一种方法是下载并解压缩 chromedriver 并将“chromedriver.exe”放在 C:\Program Files\Python38\Scripts 中,然后您不需要提供驱动程序的路径,只需
driver= web驱动程序。铬()
正如 Aphid 在他的评论中提到的,如果你想手动完成,你必须只包含存储 webdriver 的目录,而不是可执行文件:
例:
右:
PATH=$PATH:/path/to/webdriver/folder
错:
路径=$PATH:/path/to/webdriver/chromedriver.exe
Windows 系统变量和 CMD 测试:
可执行路径已弃用!
如果您收到“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)
...
评论
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
driver = webdriver.Chrome(ChromeDriverManager().install())
简单的解决方案是下载 chrome 驱动程序并移动 可执行文件复制到运行 Python 文件的文件夹中。
从最新版本开始,创建 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 运行脚本:
pip3 安装 webdriver-manager
- 然后在脚本中使用:
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(ChromeDriverManager().install())
对于使用 Selenium v4.6.0
或更高版本的用户:
我们不必担心下载和设置任何路径。我们也不必使用第三方库来处理浏览器驱动程序。driver.exe
WebDriverManager
Selenium的新工具可以自动为我们下载/处理浏览器驱动程序。SeleniumManger
现在,您的 Python 代码可以像以下简单一样简单:
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://www.google.com")
引用:
评论
chromedriver.exe
choco install chromedriver