Marionette uses a small list of Selenium atoms to interact with web elements. Initially those have been added to ensure a better reliability due to a wider usage inside the Selenium project. But by adding full support for the WebDriver specification they will be removed step by step.
Currently the following atoms are in use:
Update required Selenium atoms¶
In regular intervals the atoms, which are still in use, have to be updated. Therefore they have to be exported from the Selenium repository first, and then updated in atom.sys.mjs.
Export Selenium Atoms¶
The canonical GitHub repository for Selenium is
so make sure to have an up-to-date local copy of it. If you have to clone
it first, it is recommended to specify the
--depth=1 argument, so only the
last changeset is getting downloaded (which itself might already be
more than 100 MB).
git clone --depth=1 https://github.com/SeleniumHQ/selenium.git
To export the correct version of the atoms identify the changeset id (SHA1) of the Selenium repository in the index section of the WebDriver specification.
Fetch that changeset and check it out:
git fetch --depth=1 origin SHA1 git checkout SHA1
Now you can export all the required atoms by running the following commands. Make sure to install bazelisk first.
For each of the exported atoms a file can now be found in the folder
code including dependencies for the atom wrapped into a single function.
To update the atoms for Marionette the
atoms.js file has to be edited. For
each atom to be updated the steps as laid out below have to be performed:
Remove the contained license header, which can be found somewhere in the middle of the file.
Update the parameters of the wrapper function (at the very top) so that those are equal with the used parameters in
Copy the whole content of the file, and replace the existing code for the atom in
Test the changes¶
To ensure that the update of the atoms doesn’t cause a regression a try build should be run including Marionette unit tests, Firefox ui tests, and all the web-platform-tests.