Error: no DISPLAY environment variable specified; Selenium webdriver options have no effect

Error: no DISPLAY environment variable specified; Selenium webdriver options have no effect

我运行在 arm64 ubuntu 20.04 lts 上安装了 python3-selenium。在指定 --headless 参数和 运行ning 这段代码之后:

from selenium import webdriver
opt = webdriver.FirefoxOptions()
opt.add_argument("--headless")
serv = Service("/usr/local/bin/firefox/geckodriver")
driver = webdriver.Firefox(service=serv, firefox_options=opt)
driver.get(site)

我仍然得到错误:

selenium.common.exceptions.WebDriverException: Message: Process unexpectedly closed with status 1

进一步挖掘 geckodriver.log 文件

mozrunner::runner   INFO    Running command: "/usr/bin/firefox" "--marionette" "-no-remote" "-profile" "/tmp/rust_mozprofilewMNmVf"
Error: no DISPLAY environment variable specified

奇怪的是,我指定的参数 none 在这里 运行。有什么想法吗?

使用与 webdriver.Chrome 完全相同的代码而不是 webdriver.Firefox 是可行的。不幸的是,我需要这个才能与 firefox 一起使用。

要使 Firefox 无头:

opt.headless = True

opt.set_headless()

我明白了。显然你应该设置

driver = webdriver.Firefox(service=serv, options=opt)

没有

driver = webdriver.Firefox(service=serv, firefox_options=opt)

奇怪的是,这两个参数在webdriver.Firefox

中都可用
from selenium import webdriver
opt = webdriver.FirefoxOptions()
opt.add_argument("--headless")
serv = Service("/usr/local/bin/firefox/geckodriver")
driver = webdriver.Firefox(service=serv, options=opt)
driver.get(site)