geckodriver is the next generation of the Selenium FirefoxDriver. It is supported by Marionette, the remote protocol of Gecko/Firefox.

Marionette and geckodriver implement the W3C WebDriver standard, which is in a lot of areas is substantially different to Selenium WebDriver. The Selenium project is working with us in tandem to provide the necessary support and backwards compatibility to support W3C WebDriver servers, such as geckodriver, in Selenium. This means as we move through a period of alignment and adjustments, you may experience incompatibilities and rough edges: we are doing our best to mitigate those, but please feel free to help us address these issues by filing bug reports.

It is recommended to use the latest releases of geckodriver, Firefox, and Selenium. Generally speaking, the more recent the Firefox release, the more compatibility- and conformance fixes you will get. Please see the geckodriver README for more information on the latest supported Firefoxen.

As geckodriver and Marionette are in a pre-release state, you can track the implementation status on our status page.

Installing Selenium

Note that you must be using Selenium 3.3.1 or later.


Before installing Selenium you may want to consider creating a virtual environment:

virtualenv env_name
source env_name/bin/activate

Then you will need to install Selenium. To do that, do the following.

pip install selenium


To install Selenium, you will need to get the Ruby Gem.

gem install selenium-webdriver

JavaScript (Node.js)

npm install selenium-webdriver

Setting up the geckodriver executable

Just like the other drivers available to Selenium from other browser vendors, Mozilla has released an executable that will run alongside the browser.


You can find the latest executable on the GitHub release page.

Add executable to system path

The Selenium client bindings will try to locate the geckodriver executable from the system path. You will need to add the directory containing the executable to the system path.

On Unix systems you can do the following to append it to your system’s search path, if you’re using a bash-compatible shell:

export PATH=$PATH:/path/to/geckodriver

On Windows you need to update the Path system variable to add the full directory path to the executable. The principle is the same as on Unix.


Most of the configuration of geckodriver is handled by 'capabilities' passed from the client bindings, and so you should initially look at the documentation for these first. For anything else, or to understand more, please refer to the documentation.

Updating your tests to use Marionette

With Selenium 3.0 and later, you shouldn't need to do anything to use Marionette, as it's enabled by default.

Raising bugs

There are bound to be issues, and we would love to know about them. Please feel free to raise them on Bugzilla. To view what has been implemented, have a look at our status page.

Document Tags and Contributors

 Last updated by: markingram,