Selenium Manager is a standalone tool that automatically manages the browser infrastructure required by Selenium (i.e., browsers and drivers). In other words, it implements the concept of the so-called batteries included concept in Selenium.
Selenium Manager has been implemented as a CLI (Command-Line Interface) tool using Rust. Therefore, to run it from the source code, you need to install Rust and Cargo. On Linux and macOS systems, this is done as follows:
curl https://sh.rustup.rs -sSf | sh
Alternatively, you can build it using Bazel by executing bazel build //rust:selenium-manager
from the top-level directory of the Selenium repo (the same one where the WORKSPACE
file is).
Selenium Manager can be executed using Cargo as follows:
$ cargo run -- --help
selenium-manager 1.0.0-M1
Automated driver management for Selenium
Usage: selenium-manager [OPTIONS] --browser <BROWSER>
Options:
-b, --browser <BROWSER>
Browser type (e.g., chrome, firefox, edge)
-D, --driver-version <DRIVER_VERSION>
Driver version (e.g., 106.0.5249.61, 0.31.0, etc.) [default: ]
-B, --browser-version <BROWSER_VERSION>
Major browser version (e.g., 105, 106, etc.) [default: ]
-d, --debug
Display DEBUG messages
-t, --trace
Display TRACE messages
-c, --clear-cache
Clear driver cache
-h, --help
Print help information
-V, --version
Print version information
For instance, the command required to manage chromedriver is the following:
$ cargo run -- --browser chrome
INFO /home/boni/.cache/selenium/chromedriver/linux64/106.0.5249.61/chromedriver
If everything is correct, the last line contains the path to the driver (which will be used in the bindings). To get DEBUG
traces, we can use:
$ cargo run -- --browser chrome --debug
DEBUG Clearing cache at: /home/boni/.cache/selenium
DEBUG Using shell command to find out chrome version
DEBUG Running sh command: "google-chrome --version"
DEBUG Output { status: ExitStatus(unix_wait_status(0)), stdout: "Google Chrome 106.0.5249.91 \n", stderr: "" }
DEBUG The version of chrome is 106.0.5249.91
DEBUG Detected browser: chrome 106
DEBUG Reading chromedriver version from https://chromedriver.storage.googleapis.com/LATEST_RELEASE_106
DEBUG starting new connection: https://chromedriver.storage.googleapis.com/
DEBUG Required driver: chromedriver 106.0.5249.61
DEBUG starting new connection: https://chromedriver.storage.googleapis.com/
DEBUG File extracted to /home/boni/.cache/selenium/chromedriver/linux64/106.0.5249.61/chromedriver (13158208 bytes)
INFO /home/boni/.cache/selenium/chromedriver/linux64/106.0.5249.61/chromedriver
Alternatively, you can replace cargo run
with bazel run //rust:selenium-manager
, for example bazel run //rust:selenium-manager -- --browser chrome --debug
The implementation of Selenium Manager has been planned to be incremental. In the beginning, it should be a component that each Selenium language binding can optionally use to manage the local browser infrastructure. In the mid-term, and as long as it becomes more stable and complete, it could be used as the default tool for automated browser and driver management. All in all, the milestone we propose are the following:
Milestone | Description |
---|---|
M1: Driver management |
|
M2: Cross-platform driver management |
|
M3: Browser management: Chrome/Chromium in Linux |
|
M4: Cross-platform browser management for Chrome/Chromium |
|
M5: Browser management for other browsers in Linux |
|
M6: Full browser management support |
|
M7: Evergreen Selenium Manager |
|
M8: Auto-installable Selenium Manager in Linux |
|
M9: Cross-platform auto-installable Selenium Manager |
|