在Ubuntu上使用Selenium/Python与Chromedriver
我正在尝试使用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 个回答
只需要告诉你的机器上Chrome浏览器的驱动程序在哪里就可以了。
如果你已经安装了Chromium浏览器,那么就去找这个驱动程序:
sudo find / -type f -name chromedriver
然后选择与你的浏览器相对应的驱动程序。
顺便说一下,对我来说是
driver = webdriver.Chrome('/snap/chromium/1827/usr/lib/chromium-browser/chromedriver')
根据消息的提示:ChromeDriver的可执行文件需要在系统的路径中。
那么,它在路径中吗?你可以通过运行以下命令来检查:
$ cd
$ chromedriver --version
如果你没有看到版本信息,那就说明chromedriver
肯定不在路径中。
我并没有告诉webdriver去哪里找chromedriver
。我使用的是Ubuntu的“chromium-chromedriver”这个软件包,但它把文件放在了/usr/lib/chromium-browser/chromedriver
,而这个位置不在我的路径中。所以我在/usr/bin
里放了一个软链接。
下面的代码通常应该可以正常运行:
driver = webdriver.Chrome(executable_path='/usr/local/bin/chromedriver')
注意,在你的问题中,路径前面没有'/'这个符号。
另外,确保位于 /usr/local/bin/ 的 chromedriver 可执行文件有合适的文件权限,也就是说,它必须可以被执行:
> chmod 777 /usr/local/bin/chromedriver
我用以下方法解决了这个问题:
打开终端,输入
whereis chromedriver
。在我的情况下,输出结果是:chromedriver: /usr/local/bin/chromedriver
复制这个路径,然后像下面这样修改你的Webdriver实例:
driver = webdriver.Chrome('/usr/local/bin/chromedriver')
这样就可以了!
根据来自 https://askubuntu.com/questions/539498/where-does-chromedriver-install-to 的建议,我成功地让它工作了,步骤如下:
安装了 chromium-chromedriver:
sudo apt-get install chromium-chromedriver
在 selenium 的代码中添加了路径:
driver = webdriver.Chrome("/usr/lib/chromium-browser/chromedriver")
请注意,这里打开的是 Chromium 而不是 Chrome。希望这些信息对你有帮助。