Firefox Options

Introduction

Firefox Options is a Selenium feature that allows you to customize the behavior of the Mozilla Firefox browser before it is launched. Similar to Chrome Options, Firefox Options enable you to configure browser settings, disable notifications, run the browser in headless mode, set custom preferences, and control various startup behaviors.

Firefox Options are widely used in Selenium automation to create a controlled browser environment, improve test stability, and ensure consistent execution across different testing environments.

In this tutorial, you will learn what Firefox Options are, why they are used, their syntax, practical examples, real-world applications, common mistakes, best practices, and frequently asked interview questions.


What are Firefox Options?

Firefox Options is a Selenium class that allows automation engineers to configure Firefox browser settings before creating a WebDriver instance.

Using Firefox Options, you can:

  • Disable browser notifications.

  • Run Firefox in headless mode.

  • Configure browser preferences.

  • Set custom Firefox profiles.

  • Pass startup arguments.

  • Customize browser behavior before launch.

Firefox Options help make automation tests more reliable and easier to maintain.


Why Do We Use Firefox Options?

Firefox Options are commonly used to:

  • Customize browser startup.

  • Disable browser notifications.

  • Configure browser preferences.

  • Run tests in headless mode.

  • Improve automation stability.

  • Create consistent browser environments.


Syntax

Create Firefox Options

options = webdriver.FirefoxOptions()

Set Browser Preferences

options.set_preference("preference_name", value)

Launch Firefox Using Options

driver = webdriver.Firefox(options=options)

Practical Example

The following example demonstrates how to use Firefox Options in Selenium.

The automation script creates a FirefoxOptions object, disables browser web notifications using a custom preference, launches Firefox, opens the Selenium practice website, and verifies the page title.

from selenium import webdriver


# Topic: 8. Browser Configuration - Firefox Options
# Practice site: https://the-internet.herokuapp.com/
#
# FirefoxOptions works the same way as ChromeOptions. This example sets a
# custom profile preference before launching Firefox.


def test_firefox_options():
    options = webdriver.FirefoxOptions()
    options.set_preference("dom.webnotifications.enabled", False)

    driver = webdriver.Firefox(options=options)

    try:
        driver.get("https://the-internet.herokuapp.com/")

        assert driver.title == "The Internet"

    finally:
        driver.quit()

Output

Firefox Options created successfully.

Browser launched with custom preferences.

Website opened successfully.

Page Title:
The Internet

Assertion Passed.

Test Executed Successfully.

Understanding the Code

Import WebDriver

from selenium import webdriver

Imports the Selenium WebDriver module.


Create Firefox Options

options = webdriver.FirefoxOptions()

Creates a Firefox Options object that stores browser configuration settings.


Set Browser Preference

options.set_preference("dom.webnotifications.enabled", False)

Disables browser web notifications before Firefox starts.

The preference:

dom.webnotifications.enabled

controls whether websites are allowed to display notification popups.

Setting it to:

False

prevents notification dialogs from interrupting automation tests.


Launch Firefox with Options

driver = webdriver.Firefox(options=options)

Starts Firefox using the configured browser options.


Open the Website

driver.get("https://the-internet.herokuapp.com/")

Navigates to the Selenium practice website.


Verify the Page Title

assert driver.title == "The Internet"

Confirms that the expected page loaded successfully.


Close the Browser

driver.quit()

Closes all browser windows and ends the WebDriver session.


Browser Execution Flow

Create Firefox Options
        │
        ▼
Set Browser Preferences
        │
        ▼
Launch Firefox with Options
        │
        ▼
Open Website
        │
        ▼
Verify Page Title
        │
        ▼
Assertions Pass
        │
        ▼
Close Browser

Commonly Used Firefox Options

Firefox OptionDescription
set_preference("dom.webnotifications.enabled", False)Disables browser notifications.
add_argument("-headless")Runs Firefox in headless mode.
set_preference("browser.download.dir", "path")Sets the download directory.
set_preference("browser.download.folderList", 2)Uses a custom download folder.
set_preference("browser.helperApps.neverAsk.saveToDisk", "...")Automatically downloads specified file types.

Automation Testing Example

Suppose your Selenium tests frequently encounter browser notification popups.

You can disable notifications before launching Firefox.

options = webdriver.FirefoxOptions()

options.set_preference("dom.webnotifications.enabled", False)

driver = webdriver.Firefox(options=options)

This prevents browser notifications from interrupting automation execution.


Real-World Example

Consider an automation framework running hundreds of Selenium tests on Firefox every night.

Using Firefox Options, the framework can:

  • Disable browser notifications.

  • Configure download folders.

  • Run Firefox in headless mode.

  • Set browser preferences automatically.

This ensures smooth and reliable automation execution.


Common Mistakes Beginners Make

Forgetting to Pass Firefox Options

Creating Firefox Options alone is not enough.

Incorrect

options = webdriver.FirefoxOptions()

driver = webdriver.Firefox()

Correct

driver = webdriver.Firefox(options=options)

Setting Preferences After Launching Firefox

Browser preferences must be configured before launching Firefox.

Incorrect

driver = webdriver.Firefox()

options.set_preference(...)

Correct

options = webdriver.FirefoxOptions()

options.set_preference(...)

driver = webdriver.Firefox(options=options)

Using Invalid Preference Names

Always use valid Firefox preference names supported by Mozilla.


Best Practices

  • Configure Firefox Options before creating the WebDriver instance.

  • Disable unnecessary browser notifications for stable automation.

  • Use headless mode for CI/CD pipelines when appropriate.

  • Configure download preferences when testing file downloads.

  • Keep browser configuration centralized in your automation framework.

  • Always close the browser using driver.quit().


Conclusion

Firefox Options provide a flexible way to customize Firefox browser behavior before launching Selenium tests. They allow automation engineers to configure browser preferences, disable notifications, run tests in headless mode, and create stable testing environments.

Using Firefox Options helps build professional Selenium automation frameworks that execute consistently across different environments.


Frequently Asked Questions (FAQs)

What are Firefox Options in Selenium?

Firefox Options allow you to customize Firefox browser settings before launching the browser.


How do I create Firefox Options?

options = webdriver.FirefoxOptions()

How do I launch Firefox with Firefox Options?

driver = webdriver.Firefox(options=options)

How do I disable browser notifications in Firefox?

options.set_preference("dom.webnotifications.enabled", False)

When should I use Firefox Options?

Use Firefox Options whenever you need to customize browser startup, configure preferences, disable notifications, or improve automation stability.


Key Takeaways

  • Firefox Options customize Firefox browser behavior before launch.

  • Create Firefox Options using webdriver.FirefoxOptions().

  • Configure browser settings using set_preference().

  • Launch Firefox with webdriver.Firefox(options=options).

  • Firefox Options are commonly used to disable notifications, configure downloads, and run tests in headless mode.

  • Configure Firefox Options before creating the WebDriver instance.

  • Firefox Options improve automation stability and consistency.

  • Firefox Options are widely used in Selenium frameworks and are a frequently asked interview topic.