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.
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
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:
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.