如何在Ubuntu上安装geckodriver?

我在Python中使用Selenium,尝试运行webdriver函数:
default_browser = webdriver.Firefox()
出现了以下异常:
WebDriverException: Message: 'geckodriver'可执行文件需要在PATH中。
在这个网站上找到了geckodriver:https://github.com/mozilla/geckodriver 但是在Ubuntu 16.04上如何安装它并且我能修复这个问题吗?

2下载、解压并将其添加到 $PATH。 - rajeevmaash
嗨 @rajeevmaash ,请详细解释一下,非常感谢。 - mySun
2sudo apt-get install firefox-geckodriver - Mister Verleg
1@MisterVerleg 你应该将它作为一个答案添加进去。Ubuntu有一个与Debian不同的软件包。 - baptx
1firefox-geckodriver Ubuntu软件包似乎在Ubuntu 22.04中不再可用:https://packages.ubuntu.com/impish/web/firefox-geckodriver - countermeasure
1@baptx 我会感谢你! - Mister Verleg
@countermeasure确实,我检查了软件包,但没有检查Ubuntu的最新版本是什么。 - baptx
从进一步了解的情况来看,似乎在Ubuntu 22.04上执行简单的sudo apt install firefox命令将会同时安装geckodriver。 - countermeasure
@countermeasure 如果我们在https://packages.ubuntu.com/jammy/amd64/firefox/filelist的软件包文件中没有看到它,那么这怎么可能呢? - baptx
1@baptx 我不知道,但我怀疑这可能与Firefox现在作为snap安装有关,即使使用apt安装也是如此。我也很想听听对此有一些了解的人是如何工作的 :) - countermeasure
6个回答

以下是步骤:
  1. 前往geckodriver发布页面。找到适用于您平台的最新版本驱动程序并下载。例如:

    wget https://github.com/mozilla/geckodriver/releases/download/v0.24.0/geckodriver-v0.24.0-linux64.tar.gz
    
  2. 使用以下命令解压文件:

    tar -xvzf geckodriver*
    
  3. 将其设置为可执行文件:

    chmod +x geckodriver
    
  4. 将驱动程序添加到PATH环境变量中,以便其他工具可以找到它:

    export PATH=$PATH:/path-to-extracted-file/.
    
有很多方法可以做到这一点,上述方法适用于我在Ubuntu 16.10 64位上的操作系统。

102第四步可以更改为 sudo mv geckodriver /usr/local/bin/ - Tulio Casagrande
3谢谢@TulioCasagrande。第四步对我没用,但是你的命令有效。 - Just In Time Berlake
1在Ubuntu Bionic中有一个名为firefoxdriver 3.8.0的软件包,但它不包含geckodriver,所以目前无法正常工作。这些软件包的2.x版本能够启动Firefox,但无法执行任何操作。 - Velkan
注意:$PATH 应该包含一个目录,例如 /usr/local/bin。不要将可执行文件,如 /path/to/geckodriver 放在其中。 - jfs
1我做了一切正确的事情,但忘记安装Firefox :-) 如果是这样的话,只需运行:sudo apt-get install firefox - Wojciech Jakubas
1第三步是多余的,我们正在下载的是一个gunzip文件,而不是一个zip文件。 - lamino
1如果有其他人和我一样蠢,记住不要字面上导出路径“/path-to-extracted-file/。”我想知道这是否是其他人报告第四步无法正常工作的原因。:/ - Ram
1如果您正在使用Selenium,请确保geckodriver和Selenium的版本是兼容的。 - precise
@TulioCasagrandeAlberto 这个很不错,比其他任何解决方案都要好!!! - Manishyadav

在Ubuntu上手动安装geckodriver的步骤:

  • 访问https://github.com/mozilla/geckodriver/releases
  • 下载最新版本的"geckodriver-vX.XX.X-linux64.tar.gz"
  • 解压缩tarball(tar -xvzf geckodriver-vX.XX.X-linux64.tar.gz
  • geckodriver赋予可执行权限(chmod +x geckodriver
  • geckodriver二进制文件移动到/usr/local/bin或系统PATH中的任何位置。

在Ubuntu上安装geckodriver的脚本:

#!/bin/bash

INSTALL_DIR="/usr/local/bin"

json=$(curl -s https://api.github.com/repos/mozilla/geckodriver/releases/latest)
url=$(echo "$json" | jq -r '.assets[].browser_download_url | select(contains("linux64") and endswith("gz"))')
curl -s -L "$url" | tar -xz
chmod +x geckodriver
sudo mv geckodriver "$INSTALL_DIR"
echo "installed geckodriver binary in $INSTALL_DIR"

6我没有经历过 - 我有自己的脚本 - 但这种严肃的脚本编写,使用 jq 并尽可能避免硬编码的东西应该始终得到赞赏。 - ribamar
1我喜欢你在脚本中使用jq来获取目标URL的方式。 - NurShomik
我是这样安装的,谢谢,它运行得很顺利,然后作为一个命令进行了测试,也成功了。 但是当我在Python脚本中运行selenium时,它引发了相同的异常:selenium.common.exceptions.WebDriverException: Message: 'geckodriver'可执行文件需要在PATH中。 - miguelfg

Webdriver安装(静默模式),可用于系统管理员脚本(bash/ansible)。
## Geckodriver
wget https://github.com/mozilla/geckodriver/releases/download/v0.23.0/geckodriver-v0.23.0-linux64.tar.gz
sudo sh -c 'tar -x geckodriver -zf geckodriver-v0.23.0-linux64.tar.gz -O > /usr/bin/geckodriver'
sudo chmod +x /usr/bin/geckodriver
rm geckodriver-v0.23.0-linux64.tar.gz

## Chromedriver
wget https://chromedriver.storage.googleapis.com/2.29/chromedriver_linux64.zip
unzip chromedriver_linux64.zip
sudo chmod +x chromedriver
sudo mv chromedriver /usr/bin/
rm chromedriver_linux64.zip

谢谢。看起来geckodriver版本0.16.1与FF 52.4.0(在Debian jessie上)兼容 - geckodriver版本0.19不是。 - Juuso Ohtonen
对于我的使用情况,我更喜欢这个而不是完全自动化的脚本。首先,它不使用我系统上没有安装的jq工具。其次,它总是安装一个我可以测试和验证是否正常工作的已知版本。 - poleguy


谢谢,我已经把你的评论加到了我的回答里面,但是我注意到你也做了自己的回答。如果你希望我把它删除,请告诉我! - Mister Verleg
1@MisterVerleg 没问题。我们就把你的回答和我的回答都保留下来,让排序/排名系统来处理剩下的事情。这似乎是最简单的方法 :) - countermeasure

如果您使用的是Ubuntu 2.04之前的命令行预设。
sudo apt-get install firefox-geckodriver

感谢@countermeasure的评论:
显然,安装Firefox也会安装Gecko驱动程序。
sudo apt install firefox 

实际上,这在当时是有效的,但该软件包在最新的Ubuntu版本中不再可用,正如问题评论中的@countermeasure所提到的。 - baptx
1еңЁUbuntu 22.04дёҠпјҢдјјд№Һsudo apt install firefoxе‘Ҫд»ӨдјҡеҗҢж—¶е®үиЈ…geckodriverгҖӮжҲ‘зҢңиҝҷеҸҜиғҪжҳҜдёәд»Җд№Ҳfirefox-geckodriverиҪҜ件еҢ…иў«еҲ йҷӨзҡ„еҺҹеӣ гҖӮ - countermeasure

基本上有三个步骤:

  1. 从 GitHub 下载一个版本
  2. 解压缩到正确的目录中,即 usr/local/bin(可以合并到一行!)
  3. 设置可执行权限
  4. 这些步骤适用于任何 Linux 发行版(在我的 Debian 10 上工作)。以下是 Shell 代码:
wget https://github.com/mozilla/geckodriver/releases/download/v0.33.0/geckodriver-v0.33.0-linux64.tar.gz
sudo tar -xzvf geckodriver*tar.gz -C /usr/local/bin
sudo chmod +x /usr/local/bin/geckodriver

关于最新版本的Ubuntu,可以使用sudo apt-get install firefox进行安装。旧版本则需要使用sudo apt-get install firefox-geckodriver
Package firefox-geckodriver is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source
However the following packages replace it:
  firefox