Proxy for using W3C WebDriver-compatible clients to interact with Gecko-based browsers.
This program provides the HTTP API described by the WebDriver protocol to communicate with Gecko browsers, such as Firefox. It translates calls into the Marionette automation protocol by acting as a proxy between the local- and remote ends.
You can consult the change log for a record of all notable changes to the program.
Marionette and geckodriver are not yet feature complete. This means it does not yet offer full conformance with the WebDriver standard or complete compatibility with Selenium.
You can track the implementation status of the latest Firefox Nightly on MDN. We also keep track of known Marionette, Selenium, and specification problems in our issue tracker.
Marionette support is best in Firefox 48 and onwards, although the more recent the Firefox version, the more bug fixes and features. Firefox 47 is explicitly not supported.
geckodriver supports a capability named firefoxOptions
which takes
Firefox-specific preference values. This must be a dictionary and may
contain any of the following fields:
Name | Type | Default | Description |
---|---|---|---|
binary
| string
| Taken from -b argument
or system default location
| Absolute path of the Firefox binary,
e.g. /usr/bin/firefox or /Applications/Firefox.app/Contents/MacOS/firefox ,
to select which custom browser binary to use.
If left undefined geckodriver will attempt
to deduce the default location of Firefox
on the current system.
|
args
| Array.<string>
| Command line arguments to pass to the Firefox binary.
These must include the leading -- where required
e.g. ["--devtools"] .
| |
profile
| string
| New, empty profile | Base64-encoded zip of a profile directory to use as the profile for the Firefox instance. This may be used to e.g. install extensions or custom certificates. |
log
| Log options object | Logging options for Gecko. | |
prefs
| Object<string, (string|boolean|integer)>
| Map of preference name to preference value, which can be a string, a boolean or an integer. |
Name | Type | Default | Description |
---|---|---|---|
level
| String | info with optimised Firefox builds,
and debug with non-optimised
| Set the level of verbosity in Gecko.
Available levels are trace ,
debug , config ,
info , warn ,
error , and fatal .
|
geckodriver is written in Rust and you need the Rust toolchain to compile it.
To build the project for release, ensure you do a compilation with optimisations:
% cargo build --release
Or if you want a non-optimised binary for debugging:
% cargo build
Usage steps are documented on MDN, but the gist of it is this:
% geckodriver -b /usr/bin/firefox
Or if you’re on Mac:
% geckodriver -b /Applications/FirefoxNightly.app/Contents/MacOS/firefox-bin