[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Using IceCat/geckodriver with Selenium (Python)

From: Maxim Cournoyer
Subject: Using IceCat/geckodriver with Selenium (Python)
Date: Fri, 05 Nov 2021 14:48:46 -0400


I'm sharing this bit of knowledge as it was not obvious at all.
Selenium is hard-coded to look for 'firefox' in a couple places, even in
the serialized settings it sends to the browser instance controlled by

Here's the initialization that worked using Guix on the
core-updates-frozen-batched-changes branch (where 'geckodriver' was
recently added to IceCat):

--8<---------------cut here---------------start------------->8---
from selenium.webdriver import Firefox, FirefoxOptions
# Monkey patch the KEY string for IceCat.
FirefoxOptions.KEY = "moz:icecatOptions"
options = FirefoxOptions()
options.headless = False
options.binary = 'icecat'
options.set_capability('browserName', 'icecat')
self.driver = Firefox(options=options)# TODO:
--8<---------------cut here---------------end--------------->8---

The non-obvious was monkey patching the 'moz:icecatOptions' string of
the FirefoxOptions object, and having to set the 'browserName'
capability; otherwise a capability/invalid argument execption would be

If you use chromedriver (included with) our ungoogled-chromium instead,
it is more straightforward as there is nothing to rename/monkey patch:

--8<---------------cut here---------------start------------->8---
options = ChromeOptions()
options.headless = False
self.driver = Chrome(options=options)
--8<---------------cut here---------------end--------------->8---

I hope that helps someone else :-).


reply via email to

[Prev in Thread] Current Thread [Next in Thread]