在Ubuntu上使用Selenium/Python与Chromedriver

55 投票
10 回答
157456 浏览
提问于 2025-04-17 22:47

我正在尝试使用chromedriver来执行一些测试,并且我试过以下几种方法来启动chromedriver。

driver = webdriver.Chrome('/usr/local/bin/chromedriver')

还有

driver = webdriver.Chrome(executable_path='/usr/local/bin/chromedriver')

以及

import os
from selenium import webdriver

chromedriver = "/usr/local/bin/chromedriver"
os.environ["webdriver.chrome.driver"] = chromedriver
driver = webdriver.Chrome(chromedriver)
driver.get("http://stackoverflow.com")

但是这些方法都没有解决问题,错误信息是:selenium.common.exceptions.WebDriverException: Message: 'ChromeDriver executable needs to be available in the path.

我已经检查了好几次,发现chromedriver确实在这个位置:/usr/local/bin

但是我的脚本还是无法运行。有没有人能帮帮我。

我的谷歌浏览器位置是:/usr/bin/google-chrome

10 个回答

2

只需要告诉你的机器上Chrome浏览器的驱动程序在哪里就可以了。

如果你已经安装了Chromium浏览器,那么就去找这个驱动程序:

sudo find / -type f -name chromedriver

然后选择与你的浏览器相对应的驱动程序。

顺便说一下,对我来说是

driver = webdriver.Chrome('/snap/chromium/1827/usr/lib/chromium-browser/chromedriver')
2

根据消息的提示:ChromeDriver的可执行文件需要在系统的路径中。

那么,它在路径中吗?你可以通过运行以下命令来检查:

$ cd
$ chromedriver --version

如果你没有看到版本信息,那就说明chromedriver肯定不在路径中。

我并没有告诉webdriver去哪里找chromedriver。我使用的是Ubuntu的“chromium-chromedriver”这个软件包,但它把文件放在了/usr/lib/chromium-browser/chromedriver,而这个位置不在我的路径中。所以我在/usr/bin里放了一个软链接。

5

下面的代码通常应该可以正常运行:

driver = webdriver.Chrome(executable_path='/usr/local/bin/chromedriver')

注意,在你的问题中,路径前面没有'/'这个符号。

另外,确保位于 /usr/local/bin/ 的 chromedriver 可执行文件有合适的文件权限,也就是说,它必须可以被执行:

> chmod 777 /usr/local/bin/chromedriver
12

我用以下方法解决了这个问题:

  1. 打开终端,输入 whereis chromedriver。在我的情况下,输出结果是:

    chromedriver: /usr/local/bin/chromedriver

  2. 复制这个路径,然后像下面这样修改你的Webdriver实例:

driver = webdriver.Chrome('/usr/local/bin/chromedriver')

这样就可以了!

83

根据来自 https://askubuntu.com/questions/539498/where-does-chromedriver-install-to 的建议,我成功地让它工作了,步骤如下:

  1. 安装了 chromium-chromedriver:

    sudo apt-get install chromium-chromedriver
    
  2. 在 selenium 的代码中添加了路径:

    driver = webdriver.Chrome("/usr/lib/chromium-browser/chromedriver")
    

请注意,这里打开的是 Chromium 而不是 Chrome。希望这些信息对你有帮助。

撰写回答