Stop Managing WebDriver Binaries Manually in Selenium 4
Selenium 4 includes Selenium Manager, which downloads and caches WebDriver binaries automatically. Learn when to use it and where it falls short.
03 Sept 2026, 19:41 UTC

The missing driver error that blocks your test run
You clone a repository, run your Selenium test, and see something like: session not created: This version of ChromeDriver only supports Chrome version 118. The test cannot start because the WebDriver binary - the small executable that lets Selenium control Chrome, Firefox, or Edge - is missing, outdated, or mismatched with the browser installed on your machine.
If you are using Selenium 4, you may not need to download that binary yourself. Selenium 4 includes Selenium Manager, a built-in component that detects your browser version, downloads a compatible WebDriver binary, and caches it for future runs. This post explains when to rely on it, how to verify it works, and where it still falls short.
How Selenium Manager resolves drivers
Selenium Manager runs the first time your test instantiates a browser. It checks the installed browser, contacts the driver repository over HTTPS, downloads the matching driver executable, and stores it in a platform-specific cache directory. Subsequent runs reuse the cached binary unless the browser version changes enough to require a new driver.
It supports Chrome, Edge, and Firefox. Safari and other browsers may behave differently because some drivers ship with the operating system or require special handling. Custom browser channels - for example, a Chromium snap package or Firefox ESR - can resolve to an unexpected driver binary.
Worked example: launch Chrome without a driver path
Assumptions: you have Selenium 4 installed for Python, and the machine can reach the internet over HTTPS.
- Open a terminal in your project directory.
- Confirm the Selenium package is present:
pip show selenium. Look for a version starting with4.. - Create a file named
check_manager.py:
from selenium import webdriver
driver = webdriver.Chrome()
try:
driver.get("https://example.com")
print(driver.title)
finally:
driver.quit()
- Run the script:
python check_manager.py. Nowebdriver.chrome.driversystem property and noServiceobject are required. - Expected result: Chrome opens, loads example.com, and prints the page title. If Selenium Manager downloads a driver, you should see download progress in the terminal output.
- Check the result: after the first run, look for the Selenium Manager cache directory referenced in the console output. The downloaded driver binary should be present there.
Permissions: no administrator rights are needed to run the script, but the user account must be able to write to the Selenium Manager cache directory and make outbound HTTPS connections.
Risks: if the machine is air-gapped or blocks outbound HTTPS, Selenium Manager cannot fetch the driver and the test will fail. In that case, pre-stage the driver binary or set an explicit driver path in your test code.
Trade-offs and limitations
- Not a version-pinning tool. Selenium Manager downloads whatever driver matches the detected browser. If your browser auto-updates, the driver may change on the next run. Lock your browser and Selenium versions in CI if you need reproducible builds.
- Network dependent. Without outbound HTTPS access, it falls back to system properties or an explicitly set binary path. It does not bundle drivers offline.
- Browser support gaps. Safari and non-standard browser channels may not resolve reliably. Verify behavior for your specific browser before removing manual driver management.
Practical check before you remove WebDriverManager
Run your existing test suite on a clean machine with no manually installed WebDriver binaries. If every browser launches, Selenium Manager is handling resolution. If a test fails, inspect the console log for the detected browser version and driver URL, then decide whether to pin versions, pre-stage drivers, or keep an explicit path for that browser.
No rollback is required to try this; it is a dependency behavior change. If it causes problems, revert your Selenium package version in your build file.
Note: This draft relies on well-established Selenium 4 behavior. Because the source material flagged current verification requirements, confirm the exact Selenium minor version and cache directory on your target platform before adopting this in production.
0 replies
A thoughtful contribution can make all the difference. Be the first to share one.