如何在 Python 中使用 Selenium 运行无头 Firefox?
- 2024-12-23 08:43:00
- admin 原创
- 145
问题描述:
我正在使用 python、selenium 和 Firefox 运行此代码,但仍然得到 Firefox 的“head”版本:
binary = FirefoxBinary('C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe', log_file=sys.stdout)
binary.add_command_line_options('-headless')
self.driver = webdriver.Firefox(firefox_binary=binary)
我也尝试了一些二进制的变体:
binary = FirefoxBinary('C:\\Program Files\\Nightly\\firefox.exe', log_file=sys.stdout)
binary.add_command_line_options("--headless")
解决方案 1:
要以无头方式调用 Firefox 浏览器,您可以headless
通过Options()
类设置属性,如下所示:
from selenium import webdriver
from selenium.webdriver.firefox.options import Options
options = Options()
options.headless = True
driver = webdriver.Firefox(options=options, executable_path=r'C:UtilityBrowserDriversgeckodriver.exe')
driver.get("http://google.com/")
print ("Headless Firefox Initialized")
driver.quit()
还有另一种方法可以实现无头模式。如果您需要在不更改代码的情况下禁用或启用 Firefox 中的无头模式,您可以将环境变量设置MOZ_HEADLESS
为您希望 Firefox 无头运行的任何值,或者根本不设置它。
当您使用持续集成等并且想要在服务器中运行功能测试但仍能够在您的 PC 上以正常模式运行测试时,这非常有用。
$ MOZ_HEADLESS=1 python manage.py test # testing example in Django with headless Firefox
或者
$ export MOZ_HEADLESS=1 # this way you only have to set it once
$ python manage.py test functional/tests/directory
$ unset MOZ_HEADLESS # if you want to disable headless mode
YouTube 视频步骤
通过 Selenium 3.5.2 (Java) 实现无头模式下的 Mozilla Firefox
通过 Selenium Java 使用 Headless Chrome 登录 Gmail 帐户
结尾
如何配置 ChromeDriver 通过 Selenium 以 Headless 模式启动 Chrome 浏览器?
解决方案 2:
第一个答案不再有效。
这对我有用:
from selenium.webdriver.firefox.options import Options as FirefoxOptions
from selenium import webdriver
options = FirefoxOptions()
options.add_argument("--headless")
driver = webdriver.Firefox(options=options)
driver.get("http://google.com")
解决方案 3:
我的回答是:
set_headless(headless=True) is deprecated.
options.headless = True
对我有用
解决方案 4:
您可以使用 Python 中的Selenium运行无头 Firefox,如下所示:
from selenium import webdriver
options = webdriver.FirefoxOptions()
options.add_argument("-headless") # Here
driver = webdriver.Firefox(options=options)
或者:
from selenium import webdriver
from selenium.webdriver.firefox.options import Options
options = Options()
options.add_argument("-headless") # Here
driver = webdriver.Firefox(options=options)
此外,以下示例可以使用无头 Firefox、Selenium、pytest-django和Django测试 Django Admin 。 *我的回答解释了如何使用多个无头浏览器(Chrome、Microsoft Edge 和 Firefox)、Selenium、pytest-django 和 Django 测试 Django Admin:
# "tests/test_1.py"
import pytest
from selenium import webdriver
from django.test import LiveServerTestCase
@pytest.fixture(scope="class")
def firefox_driver_init(request):
options = webdriver.FirefoxOptions()
options.add_argument("-headless")
firefox_driver = webdriver.Firefox(options=options)
request.cls.driver = firefox_driver
yield
firefox_driver.close()
@pytest.mark.usefixtures("firefox_driver_init")
class Test_URL_Firefox(LiveServerTestCase):
def test_open_url(self):
self.driver.get(("%s%s" % (self.live_server_url, "/admin/")))
assert "Log in | Django site admin" in self.driver.title
或者:
# "tests/conftest.py"
import pytest
from selenium import webdriver
@pytest.fixture(scope="class")
def firefox_driver_init(request):
options = webdriver.FirefoxOptions()
options.add_argument("-headless")
firefox_driver = webdriver.Firefox(options=options)
request.cls.driver = firefox_driver
yield
firefox_driver.close()
# "tests/test_1.py"
import pytest
from django.test import LiveServerTestCase
@pytest.mark.usefixtures("firefox_driver_init")
class Test_URL_Firefox(LiveServerTestCase):
def test_open_url(self):
self.driver.get(("%s%s" % (self.live_server_url, "/admin/")))
assert "Log in | Django site admin" in self.driver.title
解决方案 5:
对于 OP 或任何目前感兴趣的人,下面是目前我在 Firefox 上使用的代码部分:
opt = webdriver.FirefoxOptions()
opt.add_argument('-headless')
ffox_driver = webdriver.Firefox(executable_path='path ogeckodriver', options=opt)
解决方案 6:
from selenium.webdriver.firefox.options import Options
if __name__ == "__main__":
options = Options()
options.add_argument('-headless')
driver = Firefox(executable_path='geckodriver', firefox_options=options)
wait = WebDriverWait(driver, timeout=10)
driver.get('http://www.google.com')
经过测试,工作正常,这是来自官方的 - 无头模式 | Mozilla
解决方案 7:
Used below code to set driver type based on need of Headless / Head for both Firefox and chrome:
// Can pass browser type
if brower.lower() == 'chrome':
driver = webdriver.Chrome('..driverschromedriver')
elif brower.lower() == 'headless chrome':
ch_Options = Options()
ch_Options.add_argument('--headless')
ch_Options.add_argument("--disable-gpu")
driver = webdriver.Chrome('..driverschromedriver',options=ch_Options)
elif brower.lower() == 'firefox':
driver = webdriver.Firefox(executable_path=r'..driversgeckodriver.exe')
elif brower.lower() == 'headless firefox':
ff_option = FFOption()
ff_option.add_argument('--headless')
ff_option.add_argument("--disable-gpu")
driver = webdriver.Firefox(executable_path=r'..driversgeckodriver.exe', options=ff_option)
elif brower.lower() == 'ie':
driver = webdriver.Ie('..driversIEDriverServer')
else:
raise Exception('Invalid Browser Type')
解决方案 8:
现在有了这个代码:
options = Options()
options.headless = True
driver = webdriver.Firefox(executable_path=GeckoDriverManager().install(),options=options)
我们有一个警告:
DeprecationWarning:executable_path 已被弃用,请传入 Service 对象
更改为这个,完美运行:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# selenium drivers: https://www.selenium.dev/documentation/webdriver/getting_started/install_drivers/
# pip3 install selenium
# pip3 install webdriver-manager
# for custom firefox installation: link firefox to /usr/bin/firefox, example: ln -s /opt/firefox/firefox-bin /usr/bin/firefox
from selenium import webdriver
from webdriver_manager.firefox import GeckoDriverManager
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.firefox.service import Service
options = Options()
options.headless = True
service = Service(executable_path=GeckoDriverManager().install())
driver = webdriver.Firefox(service=service, options=options)
driver.get("http://google.com/")
print("Headless Firefox Initialized")
driver.quit()
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 项目管理必备:盘点2024年13款好用的项目管理软件
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)