WebDriver is a remote control interface that enables introspection and control of user agents. As such it can help developers to verify that their websites are working and performing well with all major browsers. The protocol is standardized by the W3C and consists of two separate specifications: WebDriver classic (HTTP) and the new WebDriver BiDi (Bi-Directional).
This newsletter gives an overview of the work we’ve done as part of the Firefox 123 release cycle.
Contributions
With Firefox being an open source project, we are grateful to get contributions from people outside of Mozilla.
WebDriver code is written in JavaScript, Python, and Rust so any web developer can contribute! Read how to setup the work environment and check the list of mentored issues for Marionette.
WebDriver BiDi
New: Support for the “browsingContext.locateNodes” command
Support for the browsingContext.locateNodes
command has been introduced to find elements on the given page. Supported locators for now are CssLocator
and XPathLocator
. Additional support for locating elements by InnerTextLocator
will be added in a later version.
This command encapsulates the logic for locating elements within a web page’s DOM, streamlining the process for users familiar with the Find Element(s)
methods from WebDriver classic (HTTP). Alternatively, users can still utilize script.evaluate
, although it necessitates knowledge of the appropriate JavaScript code for evaluation.
New: Support for the “network.fetchError” event
Added support for the network.fetchError
event that is emitted when a network request ends in an error.
Update for the “browsingContext.create” command
The browsingContext.create
command has been improved on Android to seamlessly switch to opening a new tab if the type
argument is specified as window
.
We implemented this change to simplify the creation of tests that need to run across various desktop platforms and Android. Consequently, specific adjustments for new top-level browsing contexts are no longer required, enhancing the test creation process.
Bug Fixes
- An issue with the deserialization process of a
DateRemoteValue
was fixed, where the presence of a non-standard (ISO 8601) date string such as200009
did not trigger an error. - An issue with the
script.evaluate
,script.callFunction
, andscript.disown
commands was fixed where specifying both thecontext
andrealm
arguments would result in aninvalid argument
error, rather than simply ignoring therealm
argument as intended.
Marionette (WebDriver classic)
Bug Fixes
- An issue with
Element Send Keys
was fixed where sending text containing surrogate pairs would fail.
Leave a Reply