Releases: mozilla/geckodriver
0.28.0
0.28.0 (2020-11-03, c00d2b6acd3f
)
Known problems
-
macOS 10.15 (Catalina):
Due to the requirement from Apple that all programs must be notarized, geckodriver will not work on Catalina if you manually download it through another notarized program, such as Firefox.
Whilst we are working on a repackaging fix for this problem, you can find more details on how to work around this issue in the macOS notarization section of the documentation.
-
Android:
Marionette will only be enabled in GeckoView based applications when the
Firefox preferencedevtools.debugger.remote-enabled
is set toTrue
via
moz:firefoxOptions
. This will be fixed in the Firefox 90 release for Android.In some cases geckodriver could crash due to a stack overflow when handling
certain device errors.On unrooted Android 10+ devices startup crashes of the application can be
experienced due to an inappropriate location of test related files, e.g the
profile folder.
Added
- The command line flag
--android-storage
has been added, to allow geckodriver to also control Firefox on root-less Android devices. See the documentation for available values.
Fixed
-
Firefox can be started again via a shell script that is located outside of the Firefox directory on Linux.
-
If Firefox cannot be started by geckodriver the real underlying error message is now being reported.
-
Version numbers for minor and extended support releases of Firefox are now parsed correctly.
Removed
- Since Firefox 72 extension commands for finding an element’s anonymous children and querying its attributes are no longer needed, and have been removed.
0.27.0
0.27.0 (2020-07-27, 7b8c4f32cdde
)
Security Fixes
-
-
Added additional checks on the
Content-Type
header forPOST
requests to disallowapplication/x-www-form-urlencoded
,multipart/form-data
andtext/plain
. -
Added checking of the
Origin
header forPOST
requests. -
The version number of Firefox is now checked when establishing a session.
-
Known problems
-
macOS 10.15 (Catalina):
Due to the requirement from Apple that all programs must be notarized, geckodriver will not work on Catalina if you manually download it through another notarized program, such as Firefox.
Whilst we are working on a repackaging fix for this problem, you can find more details on how to work around this issue in the macOS notarization section of the documentation.
-
Android:
Marionette will only be enabled in GeckoView based applications when the
Firefox preferencedevtools.debugger.remote-enabled
is set toTrue
via
moz:firefoxOptions
. This will be fixed in the Firefox 90 release for Android.In some cases geckodriver could crash due to a stack overflow when handling
certain device errors.
Added
-
To set environment variables for the launched Firefox for Android, it is now possible to add an
env
object onmoz:firefoxOptions
(note: this is not supported for Firefox Desktop) -
Support for print-to-PDF
The newly standardised WebDriver [Print] endpoint provides a way to render pages to a paginated PDF representation. This endpoint is supported by geckodriver when using Firefox version ≥78.
-
Support for same-site cookies
Cookies can now be set with a
same-site
parameter, and the value of that parameter will be returned when cookies are retrieved. Requires Firefox version ≥79. Thanks to Peter Major for the patch.
Fixed
-
Android:
-
Firefox running on Android devices can now be controlled from a Windows host.
-
Setups with multiple connected Android devices are now supported.
-
Improved cleanup of configuration files. This prevents crashes if the application is started manually after launching it through geckodriver.
-
-
Windows and Linux binaries are again statically linked.
v0.26.0
Built from e9783a644016
.
Note that with this release the minimum recommended Firefox version
has changed to Firefox ≥60.
Known problems
-
macOS 10.15 (Catalina):
Due to the recent requirement from Apple that all programs must
be notarized, geckodriver will not work on Catalina if you manually
download it through another notarized program, such as Firefox.Whilst we are working on a repackaging fix for this problem, you
can find more details on how to work around this issue in the
macOS notarization section of the documentation. -
Windows:
You must still have the Microsoft Visual Studio redistributable
runtime installed on your system for the binary to run. This
is a known bug which we weren't able fix for this release. -
Android:
Marionette will only be enabled in GeckoView based applications when the
Firefox preferencedevtools.debugger.remote-enabled
is set toTrue
via
moz:firefoxOptions
. This will be fixed in the Firefox 90 release for Android.In some cases geckodriver could crash due to a stack overflow when handling
certain device errors.
Added
-
Support for Firefox on Android
Starting with this release geckodriver is able to connect to
Firefox on Android systems, and to control packages based on
GeckoView.Support for Android works by the geckodriver process running on
a host system and Firefox running within either an emulator or
on a physical device connected to the host system. This requires
you to first enable remote debugging on the Android device.The WebDriver client must set the
platformName
capability to
"android
" and theandroidPackage
capability within
moz:firefoxOptions
to the Android package name of the Firefox
application.The full list of new capabilities specific to Android, instructions
how to use them, and examples can be found in themoz:firefoxOptions
documentation on MDN.When the session is created, the
platformName
capability will
return "android
" instead of reporting the platform of the host
system.
Changed
-
Continued Marionette refactoring changes
0.25.0 came with a series of internal changes for how geckodriver
communicates with Firefox over the Marionette protocol. This
release contains the second half of the refactoring work.
Fixed
-
Connection attempts to Firefox made more reliable
geckodriver now waits for the Marionette handshake before assuming
the session has been established. This should improve reliability
in creating new WebDriver sessions. -
Corrected error codes used during session creation
When a new session was being configured with invalid input data,
the error codes returned was not always consistent. Attempting
to start a session with a malformed capabilities configuration
will now return the invalid argument error consistently.
v0.25.0
Built from bdb64cf16b68
.
Note to Windows users! With this release you must have the Microsoft Visual Studio redistributable runtime installed on your system for the binary to run. This is a known bug with this particular release that we intend to release a fix for soon.
Added
-
Added support for HTTP
HEAD
requests to the HTTPDgeckodriver now responds correctly to HTTP
HEAD
requests,
which can be used for probing whether it supports a particular API.Thanks to Bastien Orivel for this patch.
-
Added support for searching for Nightly’s default path on macOS
If the location of the Firefox binary is not given, geckodriver
will from now also look for the location of Firefox Nightly in
the default locations. The ordered list of search paths on macOS
is as follows:/Applications/Firefox.app/Contents/MacOS/firefox-bin
$HOME/Applications/Firefox.app/Contents/MacOS/firefox-bin
/Applications/Firefox Nightly.app/Contents/MacOS/firefox-bin
$HOME/Applications/Firefox Nightly.app/Contents/MacOS/firefox-bin
Thanks to Kriti Singh for this patch.
-
Support for application bundle paths on macOS
It is now possible to pass an application bundle path, such as
/Applications/Firefox.app
as argument to thebinary
field in
moz:firefoxOptions
. This will be automatically resolved to
the absolute path of the binary when Firefox is started.Thanks to Nupur Baghel for this patch.
-
macOS and Windows builds are signed
With this release of geckodriver, executables for macOS and Windows
are signed using the same certificate key as Firefox. This should
help in cases where geckodriver previously got misidentified as
a virus by antivirus software.
Removed
-
Dropped support for legacy Selenium web element references
The legacy way of serialising web elements, using
{"ELEMENT": <UUID>}
,
has been removed in this release. This may break older Selenium
clients and clients which are otherwise not compatible with the
WebDriver standard.Thanks to Shivam Singhal for this patch.
-
Removed
--webdriver-port
command-line option--webdriver-port <PORT>
was an undocumented alias for--port
,
initially used for backwards compatibility with clients
prior to Selenium 3.0.0.
Changed
-
Refactored Marionette serialisation
Much of geckodriver’s internal plumbing for serialising WebDriver
requests to Marionette messages has been refactored to decrease
the amount of manual lifting.This work should have no visible side-effects for users.
Thanks to Nupur Baghel for working on this throughout her
Outreachy internship at Mozilla. -
Improved error messages for incorrect command-line usage
Fixed
-
Errors related to incorrect command-line usage no longer hidden
By mistake, earlier versions of geckodriver failed to print incorrect
flag use. With this release problems are again written to stderr. -
Search system path for Firefox binary on BSDs
geckodriver would previously only search the system path for the
firefox
binary on Linux. Now it supports different BSD flavours
as well.
v0.24.0
Built from 917474f3473e.
Added
-
Introduces
strictFileInteractability
capabilityThe new capabilitiy indicates if strict interactability checks
should be applied to<input type=file>
elements. As strict
interactability checks are off by default, there is a change
in behaviour when using Element Send Keys
with hidden file upload controls. -
Added new endpoint
GET /session/{session id}/moz/screenshot/full
for taking full document screenshots, thanks to Greg Fraley. -
Added new
--marionette-host <HOSTNAME>
flag for binding to a
particular interface/IP layer on the system. -
Added new endpoint
POST /session/{session_id}/window/new
for the New Window command to create a new top-level browsing context,
which can be either a window or a tab. This feature requires
Firefox 66 or later. -
When using the preference
devtools.console.stdout.content
set to
true
logging of console API calls likeinfo()
,warn()
, and
error()
can be routed to stdout. -
geckodriver now sets the
app.update.disabledForTesting
preference
to prevent Firefox >= 65 from automatically updating whilst under
automation.
Removed
- Turned off builds for arm7hf, which will no longer be released but
can still be built from the source.
Changed
-
Allow file uploads to hidden
<input type=file>
elementsThrough a series of changes to the WebDriver specification,
geckodriver is now aligned with chromedriver’s behaviour that
allows interaction with hidden<input type=file>
elements.This allows WebDriver to be used with various popular web
frameworks that—through indirection—hides the file upload control
and invokes it through other means. -
Allow use of an indefinite script timeout for the Set Timeouts
command, thanks to reimu.
Fixed
-
Corrected
Content-Type
of response header toutf-8
to fix
an HTTP/1.1 compatibility bug. -
Relaxed the deserialization of timeouts parameters to allow unknown
fields for the Set Timeouts command. -
Fixed a regression in the Take Element Screenshot to not screenshot
the viewport, but the requested element.
v0.23.0
This release contains a number of fixes for regressions introduced
in 0.22.0, where we shipped a significant refactoring to the way
geckodriver internally dealt with JSON serialisation.
Removed
- The POST
/session/{session id}/element/{element id}/tap
endpoint
was removed, thanks to Kerem Kat.
Changed
- webdriver crate upgraded to 0.38.0.
Fixed
-
desiredCapabilities
andrequiredCapabilities
are again
recognised on session creationA regression in 0.22.0 caused geckodriver to recognise
desired
andrequired
instead of the correctdesiredCapabilities
andrequiredCapabilities
. This will have caused significant
problems for users who relied on this legacy Selenium-style
session creation pattern.Do however note that support for Selenium-styled new session
requests is temporary and that this will be removed sometime
before the 1.0 release. -
duration
field made optional on pause actionsA regression in 0.22.0 caused the pause action primitive to
require aduration
field. This has now been fixed so that
pauses in action chains can be achieved with the default duration. -
Log level formatted to expected Marionette input
A regression in 0.22.0 caused the log level to be improperly
formatted when using Firefox pre-releases. This is now fixed so
that the requested log level is correctly interpreted by Marionette. -
temporary
field on addon installation made optionalA regression in 0.22.0 caused the
temporary
field for POST
/session/{session id}/moz/addon/install
to be mandatory. This has
now been fixed so that an addon is installed permanently by default. -
SHA1s in version information uses limited number of characters
The SHA1 used in
--version
when building geckodriver from a
git repository is now limited to 12 characters, as it is when
building from an hg checkout. This ensures reproducible builds.
v0.22.0
This release marks an important milestone on the path towards
a stable release of geckodriver. Large portions of geckodriver
and the [webdriver] library it is based on has been refactored to
accommodate using serde for JSON serialization.
We have also made great strides to improving WebDriver conformance,
to the extent that geckodriver is now almost entirely conforming
to the standard.
Added
-
Support for WebDriver web element-, web frame-, and web window
identifiers from Firefox. -
Added support for the non-configurable
setWindowRect
capability
from WebDriver.This capability informs whether the attached browser supports
manipulating the window dimensions and position. -
A new extension capability
moz:geckodriverVersion
is returned
upon session creation.
Changed
-
All JSON serialization and deserialisation has moved from
rustc_serialize to serde. -
The HTTP status codes used for script timeout and timeout
errors has changed from Request Timeout (408) to Internal Server
Error (500) in order to not break HTTP/1.1Keep-Alive
support,
as HTTP clients interpret the old status code to mean they should
duplicate the request. -
The HTTP/1.1
Keep-Alive
timeout for persistent connections has
been increased to 90 seconds. -
An invalid session ID error is now returned when there is no
active session. -
An invalid argument error is now returned when Add Cookie
is given invalid parameters. -
The handshake when geckodriver connects to Marionette has been
hardened by killing the Firefox process if it fails. -
The handshake read timeout has been reduced to 10 seconds instead
of waiting forever. -
The HTTP server geckodriver uses, hyper, has been upgraded to
version 0.12, thanks to Bastien Orivel. -
geckodriver version number is no longer logged on startup, as
the log level is not configured until a session is created.The version number is available through
--version
, and now
also through a newmoz:geckodriverVersion
field in the matched
capabilities. -
The webdriver library has been updated to version 0.37.0.
Fixed
-
Parsing timeout object values has been made WebDriver conforming,
by allowing floats as input. -
Implicit downloads of OpenH264 and Widevine plugins has been disabled.
-
The commit hash and date displayed when invoking
--version
is now well-formatted when built from an hg repository, thanks to
Jeremy Lempereur. -
Many documentation improvements, now published on
https://firefox-source-docs.mozilla.org/testing/geckodriver/geckodriver/.
v0.21.0
Note that with this release of geckodriver the minimum recommended
Firefox and Selenium versions have changed:
- Firefox 57 (and greater)
- Selenium 3.11 (and greater)
Added
-
Support for the chrome element identifier from Firefox.
-
The
unhandledPromptBehavior
capability now acceptsaccept and notify
,dismiss and notify
, andignore
options.Note that the unhandled prompt handler is not fully supported in
Firefox at the time of writing.
Changed
-
Firefox will now be started with the
-foreground
and-no-remote
flags if they have not already been specified by the user in
moz:firefoxOptions
.-foreground
will ensure the application window gets focus when
Firefox is started, and-no-remote
will prevent remote commands
to this instance of Firefox and also ensure we always start a new
instance. -
WebDriver commands that do not have a return value now correctly
return{value: null}
instead of an empty dictionary. -
The HTTP server now accepts
Keep-Alive
connections. -
Firefox remote protocol command mappings updated.
All Marionette commands changed to make use of the
WebDriver:
prefixes introduced with Firefox 56. -
Overhaul of Firefox preferences.
Already deprecated preferences in Firefox versions earlier than
57 got removed. -
webdriver crate upgraded to 0.36.0.
Fixed
-
Force use of IPv4 network stack.
On certain system configurations, where
localhost
resolves to
an IPv6 address, geckodriver would attempt to connect to Firefox
on the wrong IP stack, causing the connection attempt to time out
after 60 seconds. We now ensure that geckodriver uses IPv4
consistently to both connect to Firefox and for allocating a free
port. -
geckodriver failed to locate the correct Firefox binary if it was
found under a firefox or firefox-bin directory, depending on
the system, because it thought the parent directory was the
executable. -
On Unix systems (macOS, Linux), geckodriver falsely reported
non-executable files as valid binaries. -
When stdout and stderr is redirected by geckodriver, a bug prevented
the redirections from taking effect.
v0.20.1
Fixed
-
Avoid attempting to kill Firefox process that has stopped.
With the change to allow Firefox enough time to shut down in
0.20.0, geckodriver started unconditionally killing the process
to reap its exit status. This caused geckodriver to inaccurately
report a successful Firefox shutdown as a failure.The regression should not have caused any functional problems, but
the termination cause and the exit status are now reported correctly.
v0.20.0
Added
-
New
--jsdebugger
flag to open the Browser Toolbox when Firefox
launches. This is useful for debugging Marionette internals. -
Introduced the temporary, boolean capability
moz:useNonSpecCompliantPointerOrigin
to disable the WebDriver
conforming behavior of calculating the Pointer Origin.
Changed
-
HTTP status code for the
StaleElementReference
error changed
from 400 (Bad Request) to 404 (Not Found). -
Backtraces from geckodriver no longer substitute for missing
Marionette stacktraces. -
webdriver crate upgraded to 0.35.0.
Fixed
-
The Firefox process is now given ample time to shut down, allowing
enough time for the Firefox shutdown hang monitor to kick in.Firefox has an integrated background monitor that observes
long-running threads during shutdown. These threads will be
killed after 63 seconds in the event of a hang. To allow Firefox
to shut down these threads on its own, geckodriver has to wait
that time and some additional seconds. -
Grapheme clusters are now accepted as input for keyboard input
to actions.Input to the
value
field of thekeyDown
andkeyUp
action
primitives used to only accept single characters, which means
geckodriver would error when a valid grapheme cluster was sent in,
for example with the tamil nadu character U+0BA8 U+0BBF.Thanks to Greg Fraley for fixing this bug.
-
Improved error messages for malformed capability values.