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
DateRemoteValuewas fixed, where the presence of a non-standard (ISO 8601) date string such as200009did not trigger an error. - An issue with the
script.evaluate,script.callFunction, andscript.disowncommands was fixed where specifying both thecontextandrealmarguments would result in aninvalid argumenterror, rather than simply ignoring therealmargument as intended.
Marionette (WebDriver classic)
Bug Fixes
- An issue with
Element Send Keyswas fixed where sending text containing surrogate pairs would fail.
Leave a Reply