错误信息:"' chromedriver'可执行文件需要在路径中可用"

时间:2015-04-24 22:46:17

标签: python selenium selenium-chromedriver

我正在使用selenium和python,并从这个网站下载了我的Windows计算机的chromedriver:http://chromedriver.storage.googleapis.com/index.html?path=2.15/

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

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

   // Maintain a variable that holds the current value
var inputElement = document.getElementById("inputAdd_page"),
    totalCount = 0;
debugger;
inputElement.addEventListener('blur', function() {
    var count = this.value;
    // Gaurd condition
    // Only if it is a number
    if(count && !isNaN(count)) {
        fragment = document.createDocumentFragment();
        for (var j = 0; j < count; ++j) {
            div = document.createElement('div');
            button = document.createElement('button');
            button.className = "btn";
            button.setAttribute('id', ['pag_navg' + totalCount + j]);
            button.innerHTML=[1 + j];

            div.className = "page";
            div.setAttribute('id', ['page' + totalCount + j]);

            div.style.position="absolute";            
            fragment.appendChild(div);
            fragment.appendChild(button);
            totalCount++;
        }
      document.body.appendChild(fragment);
    }
});

...我一直收到以下错误消息:

  from selenium import webdriver

  driver = webdriver.Chrome()

但是 - 如上所述 - 可执行文件是路径中的(!)......这里发生了什么?

27 个答案:

答案 0 :(得分:108)

如果你打开一个cmd并键入chromedriver(假设你的chromedriver可执行文件仍然这样命名)并按Enter键,你可以测试它是否真的在PATH中。如果出现Starting ChromeDriver 2.15.322448,则会正确设置PATH,并且还会出现其他问题。

或者你可以像这样使用chromedriver的直接路径:

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

所以在你的具体案例中:

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

答案 1 :(得分:27)

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

这可以使用webdriver-manager

自动完成
pip install webdriver-manager

现在问题中的上面的代码将在下面的更改中简单地工作,

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager

driver = webdriver.Chrome(ChromeDriverManager().install())

同样可以用来设置Firefox,Edge和二进制文件

答案 2 :(得分:9)

对于原始字符串,我们必须添加路径字符串,以字符串前面的字母r开头。我测试了这种方式,它确实有效。

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

答案 3 :(得分:8)

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

答案 4 :(得分: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')

没有任何问题

答案 5 :(得分:3)

最好的肯定方法是在这里

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

driver= webdriver.Chrome()

您无需添加路径或其他任何内容

答案 6 :(得分:2)

当你解压缩chromedriver时,请指定一个确切的位置,以便以后跟踪它。下面,您将获得适用于您的操作系统的正确的chromedriver,然后将其解压缩到一个确切的位置,以后可以在您的代码中作为参数提供。

wget http://chromedriver.storage.googleapis.com/2.10/chromedriver_linux64.zip unzip chromedriver_linux64.zip -d /home/virtualenv/python2.7.9/

答案 7 :(得分:2)

CSS

答案 8 :(得分:1)

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

重新启动计算机并再次运行相同的测试用例。你不会再遇到这个问题了。

答案 9 :(得分:1)

为此主题的未来读者提供一些额外的输入/说明, 避免修补PATH环境。 Windows级别的变量并重新启动Windows系统: (适用于Chrome的https://stackoverflow.com/a/49851498/9083077的答案副本):

(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'     的AssertionError

答案 10 :(得分:0)

当我下载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->运行正常

答案 11 :(得分:0)

正如 Aphid 在他的 comment 中提到的,如果您想手动执行此操作,则必须仅包含存储网络驱动程序的目录不包含可执行文件

示例:

正确:

PATH=$PATH:/path/to/webdriver/folder

错误:

PATH=$PATH:/path/to/webdriver/chromedriver.exe


Windows 系统变量和 CMD 测试:

enter image description here

答案 12 :(得分:0)

此问题与运行机器人测试框架和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?

答案 13 :(得分:0)

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

答案 14 :(得分:0)

我在Webdriver 3.8.0(Chrome 73.0.3683.103和ChromeDriver 73.0.3683.68)上遇到了此问题。我做完之后问题就消失了

pip install -U selenium

将Webdriver升级到3.14.1。

答案 15 :(得分:0)

对于Mac OS X用户

    brew tap homebrew/cask
    brew cask install chromedriver

答案 16 :(得分:0)

另一种方法是下载并解压缩chromedriver并将' chromedriver.exe'放入 C:\ Program Files \ Python38 \ Scripts 中,然后无需提供路径司机,只是

driver = webdriver.Chrome()

答案 17 :(得分:0)

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

答案 18 :(得分:0)

C:\ Windows 处添加 webdriver (chromedriver.exe或geckodriver.exe)。 就我而言,这是可行的

答案 19 :(得分:0)

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

答案 20 :(得分:0)

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

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

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

要更新Chrome:

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

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

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

现在您可以将其添加到PATH:

  1. 在计算机中的某个位置创建一个新文件夹,您将在其中放置Web驱动程序。 我在webdrivers

  2. 中创建了一个名为C:\Program Files的文件夹
  3. 复制文件夹路径。在我的情况下是C:\Program Files\webdrivers

  4. 右键单击this PC-> properties

enter image description here

  1. 右键单击Advanced System settings
  2. 点击Environment Variables
  3. System variables中,单击path,然后单击edit
  4. 点击new
  5. 粘贴您之前复制的路径
  6. 在所有窗口上单击“确定”

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

答案 21 :(得分:0)

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

答案 22 :(得分:0)

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

答案 23 :(得分:0)

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

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

答案 24 :(得分:0)

在我的情况下,当我将chromedriver文件复制到c:\ Windows文件夹时,此错误消失。因为windows目录位于python脚本检查chromedriver可用性的路径中。

答案 25 :(得分:0)

如果在确定PATH设置正确后无效,可以尝试重新启动计算机。

在Windows 7的情况下,我总是在WebDriverException上出现错误:消息:对于chromedriver,gecodriver,IEDriverServer。我很确定我有正确的道路。重启电脑,全部工作

答案 26 :(得分:-3)

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

导入操作系统

os.environ [“ PATH”] + = os.pathsep + r'X:/您的/文件夹/脚本/'