geckodriver is the next generation of the Selenium FirefoxDriver. It is supported by Marionette, the remote protocol of Gecko/Firefox.
Marionette and geckodriver implements 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.
Python
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
Ruby
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.
Downloading
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.
Configuration
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.