错误消息:“'chromedriver' 可执行文件需要在路径中可用”
Error message: "'chromedriver' executable needs to be available in the path"
我将 selenium 与 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
(假设你的 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时,请务必指定一个准确的位置,以便日后追踪。下面,您正在为您的 OS 获取正确的 chromedriver,然后将其解压缩到一个确切的位置,稍后可以在您的代码中作为参数提供。
wget http://chromedriver.storage.googleapis.com/2.10/chromedriver_linux64.zip
unzip chromedriver_linux64.zip -d /home/virtualenv/python2.7.9/
如果您确定 PATH 设置正确后仍然无法正常工作,可以尝试重新启动计算机。
在我的情况下 windows 7,我总是在 WebDriverException 上遇到错误:消息:对于 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
.
重新启动计算机并再次 运行 相同的测试用例。你不会再遇到这个问题了。
一些额外的 input/clarification 供此主题的未来读者使用,
避免修改 PATH 环境。 Windows 级别的变量并重新启动 Windows 系统:
(我从 https://whosebug.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) 示例代码(在参考答案中)打开指定url的Firefox浏览器可能需要大约5秒。
(2) 如果在指定 url 处没有服务器已经 运行 或提供标题包含字符串 'Django' 的页面,python 控制台将显示以下错误:
在 browser.title 中断言 'Django'
断言错误
在我的例子中,当我将 chromedriver 文件复制到 c:\Windows 文件夹时,这个错误消失了。这是因为 windows 目录位于 python 脚本检查 chromedriver 可用性的路径中。
根据instruction,您需要在实例化时包含 ChromeDriver 的路径 webdriver.Chrome 例如:
driver = webdriver.Chrome('/path/to/chromedriver')
(对于 Mac 用户)
我有同样的问题,但我通过这种简单的方式解决了:
你必须将你的 chromedriver.exe 放在与你执行的脚本相同的文件夹中,而不是在 pyhton 中写这个指令:
进口os
os.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 binaries同样可以设置
如果您使用的是远程解释器,您还必须检查其可执行文件路径是否已定义。在我的例子中,从远程 Docker 解释器切换到本地解释器解决了这个问题。
检查您的 chrome 驱动程序的路径,它可能无法从那里获取。
只需将驱动程序位置复制粘贴到代码中即可。
在将 chrome 驱动程序添加到您的路径之前,请确保它与您的浏览器版本相同。
如果不是,您将需要匹配版本:update/downgrade 您 chrome 和 upgrade/downgrade 您的网络驱动程序。
我建议尽可能更新您的 chrome 版本,并匹配网络驱动程序。
待更新chrome:
- 点击右上角的三个点。
- 单击
help
-> About Google Chrome
- 更新版本并重启chrome
然后从这里下载兼容版本:http://chromedriver.chromium.org/downloads
.
注意:最新的 chrome 驱动程序并不总是与 chrome 的最新版本匹配!
现在您可以将它添加到 PATH 中:
在您的计算机中的某个位置创建一个新文件夹,您将在其中放置网络驱动程序。
我在 C:\Program Files
中创建了一个名为 webdrivers
的文件夹
复制文件夹路径。在我的例子中是 C:\Program Files\webdrivers
右击 this PC
-> properties
:
- 点击右键
Advanced System settings
- 点击
Environment Variables
- 在
System variables
中点击path
然后点击edit
- 点击
new
- 粘贴之前复制的路径
- 在所有 windows
上单击“确定”
就是这样!我用了 pycharm ,我不得不重新打开它。也许它与其他 IDE 或终端相同。
我遇到了和你一样的问题。
我正在使用 PyCharm 编写程序,我认为问题出在 PyCharm 而不是 OS 中的环境设置。
我通过脚本配置然后手动编辑环境变量中的 PATH 解决了这个问题。
希望对您有所帮助!
在此处添加 webdriver(chromedriver.exe 或 geckodriver.exe) C:\Windows .
这在我的案例中有效
最好的方法可能是获取当前目录并将剩余地址附加到它。
像这段代码(Word on windows。在 linux 上你可以使用 something line pwd):
webdriveraddress = str(os.popen("cd").read().replace("\n", ''))+'\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 --> 运行良好
在 Ubuntu:
sudo apt install chromium-chromedriver
在 Debian:
sudo apt install chromium-driver
在 macOS 上安装 Homebrew 然后执行
brew install --cask chromedriver
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'
- 我现在下载了最新的 link
- 下载并解压 chromedriver 到你想要的地方
- 例如:
~/chromedriver/chromedriver
用编辑器打开 ~/.bash_profile
并添加:
export PATH="$HOME/chromedriver:$PATH"
打开新终端window,哒哒
我在 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 然后你不需要提供 driver 的路径,只需
driver=webdriver.Chrome()
与 Aphid mentioned in his 一样,如果您想手动执行此操作,则必须 仅包括存储您的网络驱动程序的目录,而不是可执行文件:
示例:
右:
路径=$路径:/path/to/webdriver/folder
错误:
PATH=$PATH:/path/to/webdriver/chromedriver.exe
Windows系统变量和CMD测试:
MAC 位用户:
- 下载 Chromedriver:https://sites.google.com/a/chromium.org/chromedriver/downloads
2.In 终端类型“sudo nano /etc/paths”
3.Add 以 Cromedriver 路径为例的行:“/Users/username/Downloads”
- 再次尝试 运行 你的测试!
可执行路径已被弃用!
如果您收到 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)
...
The simple solution is that download the chrome driver and move the
executable file to the folder from which you run the python file.
我将 selenium 与 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
(假设你的 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时,请务必指定一个准确的位置,以便日后追踪。下面,您正在为您的 OS 获取正确的 chromedriver,然后将其解压缩到一个确切的位置,稍后可以在您的代码中作为参数提供。
wget http://chromedriver.storage.googleapis.com/2.10/chromedriver_linux64.zip
unzip chromedriver_linux64.zip -d /home/virtualenv/python2.7.9/
如果您确定 PATH 设置正确后仍然无法正常工作,可以尝试重新启动计算机。
在我的情况下 windows 7,我总是在 WebDriverException 上遇到错误:消息:对于 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
.
重新启动计算机并再次 运行 相同的测试用例。你不会再遇到这个问题了。
一些额外的 input/clarification 供此主题的未来读者使用, 避免修改 PATH 环境。 Windows 级别的变量并重新启动 Windows 系统: (我从 https://whosebug.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) 示例代码(在参考答案中)打开指定url的Firefox浏览器可能需要大约5秒。 (2) 如果在指定 url 处没有服务器已经 运行 或提供标题包含字符串 'Django' 的页面,python 控制台将显示以下错误: 在 browser.title 中断言 'Django' 断言错误
在我的例子中,当我将 chromedriver 文件复制到 c:\Windows 文件夹时,这个错误消失了。这是因为 windows 目录位于 python 脚本检查 chromedriver 可用性的路径中。
根据instruction,您需要在实例化时包含 ChromeDriver 的路径 webdriver.Chrome 例如:
driver = webdriver.Chrome('/path/to/chromedriver')
(对于 Mac 用户) 我有同样的问题,但我通过这种简单的方式解决了: 你必须将你的 chromedriver.exe 放在与你执行的脚本相同的文件夹中,而不是在 pyhton 中写这个指令:
进口os
os.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 binaries同样可以设置
如果您使用的是远程解释器,您还必须检查其可执行文件路径是否已定义。在我的例子中,从远程 Docker 解释器切换到本地解释器解决了这个问题。
检查您的 chrome 驱动程序的路径,它可能无法从那里获取。 只需将驱动程序位置复制粘贴到代码中即可。
在将 chrome 驱动程序添加到您的路径之前,请确保它与您的浏览器版本相同。
如果不是,您将需要匹配版本:update/downgrade 您 chrome 和 upgrade/downgrade 您的网络驱动程序。
我建议尽可能更新您的 chrome 版本,并匹配网络驱动程序。
待更新chrome:
- 点击右上角的三个点。
- 单击
help
->About Google Chrome
- 更新版本并重启chrome
然后从这里下载兼容版本:http://chromedriver.chromium.org/downloads .
注意:最新的 chrome 驱动程序并不总是与 chrome 的最新版本匹配!
现在您可以将它添加到 PATH 中:
在您的计算机中的某个位置创建一个新文件夹,您将在其中放置网络驱动程序。 我在
C:\Program Files
中创建了一个名为 复制文件夹路径。在我的例子中是
C:\Program Files\webdrivers
右击
this PC
->properties
:
webdrivers
的文件夹
- 点击右键
Advanced System settings
- 点击
Environment Variables
- 在
System variables
中点击path
然后点击edit
- 点击
new
- 粘贴之前复制的路径
- 在所有 windows 上单击“确定”
就是这样!我用了 pycharm ,我不得不重新打开它。也许它与其他 IDE 或终端相同。
我遇到了和你一样的问题。 我正在使用 PyCharm 编写程序,我认为问题出在 PyCharm 而不是 OS 中的环境设置。 我通过脚本配置然后手动编辑环境变量中的 PATH 解决了这个问题。 希望对您有所帮助!
在此处添加 webdriver(chromedriver.exe 或 geckodriver.exe) C:\Windows . 这在我的案例中有效
最好的方法可能是获取当前目录并将剩余地址附加到它。
像这段代码(Word on windows。在 linux 上你可以使用 something line pwd):
webdriveraddress = str(os.popen("cd").read().replace("\n", ''))+'\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 --> 运行良好
在 Ubuntu:
sudo apt install chromium-chromedriver
在 Debian:
sudo apt install chromium-driver
在 macOS 上安装 Homebrew 然后执行
brew install --cask chromedriver
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'
- 我现在下载了最新的 link
- 下载并解压 chromedriver 到你想要的地方
- 例如:
~/chromedriver/chromedriver
用编辑器打开 ~/.bash_profile
并添加:
export PATH="$HOME/chromedriver:$PATH"
打开新终端window,哒哒
我在 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 然后你不需要提供 driver 的路径,只需
driver=webdriver.Chrome()
与 Aphid mentioned in his
示例:
右:
路径=$路径:/path/to/webdriver/folder
错误:
PATH=$PATH:/path/to/webdriver/chromedriver.exe
Windows系统变量和CMD测试:
MAC 位用户:
- 下载 Chromedriver:https://sites.google.com/a/chromium.org/chromedriver/downloads
2.In 终端类型“sudo nano /etc/paths”
3.Add 以 Cromedriver 路径为例的行:“/Users/username/Downloads”
- 再次尝试 运行 你的测试!
可执行路径已被弃用!
如果您收到 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)
...
The simple solution is that download the chrome driver and move the executable file to the folder from which you run the python file.