【问题标题】:What is the executable_path in Google Colaboratory for geckodriver?Google Colaboratory 中 geckodriver 的 executable_path 是什么?
【发布时间】:2019-12-23 00:27:50
【问题描述】:

我想在 Google Colaboratory 中将 geckodriver 与 Selenium Python 包一起使用。这是我尝试过的(我不是 Ubuntu 专家)

!pip install selenium
!apt-get update 
!apt install firefox-geckodriver
from selenium.webdriver.firefox.options import Options as FirefoxOptions

firefox_options = FirefoxOptions()
firefox_options.add_argument("--headless")
driver = webdriver.Firefox(executable_path=r'/usr/bin/firefox', options=firefox_options)

这里r'/usr/bin/firefox 是错误的。我糊涂了。有什么解决办法?任何帮助表示赞赏。

【问题讨论】:

  • @orde 不重复。我的问题是关于 geckodriver 和 Google Colaboratory 的。在我的 PC chromedriver 中,geckodriver 运行良好。在 Google Colaboratory 中,我可以成功安装 chromedriver 并且运行良好。然而 webdriver.Firefox 有点不同。在“原则”中我知道该怎么做,但我没有找到必要的细节。

标签: python-3.x firefox selenium-webdriver google-colaboratory geckodriver


【解决方案1】:

executable_path

executable_path 是参数,用户可以通过该参数传递 GeckoDriver 二进制文件的绝对路径,覆盖 系统路径用于 Firefox 47.0.1 及更高版本的 GeckoDriver 二进制文件。

例子

from selenium import webdriver
from selenium.webdriver.firefox.options import Options

options = Options()
options.add_argument("start-maximized")
options.add_argument("--headless")
driver = webdriver.Firefox(options=options, executable_path=r'C:\Utility\BrowserDrivers\geckodriver.exe')
driver.get("http://google.com/")

但在您的代码试验中,您通过了 Firefox 二进制文件的绝对路径,而不是 GeckoDriver 二进制文件。如果您的用例也是传递 Firefox 二进制文件的 绝对路径,您可以使用以下代码行:

from selenium import webdriver

binary = r'C:\Program Files\Mozilla Firefox\firefox.exe'
options = webdriver.FirefoxOptions()
options.binary = binary
options.add_argument("start-maximized")
options.add_argument("--headless")
browser = webdriver.Firefox(firefox_options=options, executable_path="C:\\Utility\\BrowserDrivers\\geckodriver.exe")
browser.get('http://google.com/')

Google-Colaboratory 中的 GeckoDriver

您需要安装 geckodriver、firefox 和 selenium 并将路径添加到系统中的路径变量或复制到 bin 目录中,您可以使用以下解决方案:

# install firefox, geckodriver, and selenium
!apt-get update
!pip install selenium
!apt install firefox-geckodriver
!cp /usr/lib/geckodriver /usr/bin
!cp /usr/lib/firefox /usr/bin

from selenium import webdriver

binary = '/usr/bin/firefox'
options = webdriver.FirefoxOptions()
options.binary = binary
options.add_argument('start-maximized')
options.add_argument('--headless')
browser = webdriver.Firefox(firefox_options=options, executable_path='/usr/bin/geckodriver')
browser.get('http://google.com/')

更新 1

根据您在 cmets 中提到的错误,当您使用 ipython 时,选项应在单引号内传递为 start-maximized--headless。此外,在指定 executable_path 时,raw string literals markerstring

之间不应有任何空格字符

您可以在SyntaxError: invalid syntax with executable_path in ipython找到相关讨论


更新 2

GeckoDriverSeleniumFirefox Browser 兼容性图表您可以在WebDriverException: Message: invalid argument: can't kill an exited process with GeckoDriver, Selenium and Python on RaspberryPi3

找到相关讨论

【讨论】:

  • @vesszabo 查看答案更新并告诉我状态。
  • 你的解决方法是正确的,firefox、geckodriver在/usr/bin。但是 ----> 6 browser = webdriver.Firefox(options=options, executable_path='/usr/bin/geckodriver') WebDriverException: Message: invalid argument: can't kill an exited process I searched stackoverflow and stackoverflow.com/questions/52534658/… 说这是版本问题。我不知道我应该选择哪个版本。我试过 !apt install -upgrade firefox-geckodriver ,但没有帮助。请多一点帮助。
  • 我删除了我之前的评论,因为当我完成编辑并想添加时,我用了超过 5 分钟并且只展示了我的一部分评论。很抱歉给您带来不便。
  • @vesszabo 用兼容性图表更新了linked answer。如果有任何疑问,请告诉我。
  • !cp /usr/lib/geckodriver /usr/bin 报错,没有这个文件,geckodriver存放在/usr/bin/geckodriver。 !cp /usr/lib/firefox /usr/bin 也不起作用,/usr/lib/firefox 是目录,而不是文件。总体而言,代码失败,出现“进程意外关闭状态信号”异常。请更新您的答案。
猜你喜欢
  • 1970-01-01
  • 2019-01-31
  • 2018-05-28
  • 1970-01-01
  • 2020-09-11
  • 2018-04-26
  • 2022-01-24
  • 2019-04-01
  • 2019-05-29
相关资源
最近更新 更多