Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Some links on this page are affiliate links: if you buy through them we may earn a commission, at no extra cost to you.

Fastest fix: update Selenium and run your test again so Selenium Manager can locate a suitable ChromeDriver. If automatic management is unavailable or you need a pinned binary, add the directory containing chromedriver (or chromedriver.exe on Windows) to PATH, restart the terminal, IDE, service, or CI job that launches Selenium, and verify it with chromedriver --version.

The error is a driver-discovery failure. Selenium cannot find a usable ChromeDriver through PATH, an explicit path, or its driver-management fallback. Finding the executable is only the first check; Chrome and ChromeDriver must also be compatible.

What the error actually means

ChromeDriver is a separate executable that Selenium WebDriver uses to control Chrome. Selenium must discover that executable before it can create a browser session. The message usually appears when one of these conditions is true:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  • The directory containing ChromeDriver is not in the PATH seen by the process running your test.
  • The PATH entry points to a ZIP file or to the executable itself rather than to its containing directory.
  • The file is missing, has the wrong operating-system build, or is not executable.
  • Your IDE, service, container, or CI runner has a different PATH from your interactive shell.
  • Selenium cannot use its automatic driver-management fallback.

On macOS and Linux the executable is normally named chromedriver; on Windows it is chromedriver.exe. A successful lookup does not prove that the driver can start Chrome. A later “session not created” or version-mismatch message means discovery worked and compatibility is now the problem.

Try Selenium Manager first

Current Selenium releases ship with Selenium Manager, Selenium’s official driver manager. Selenium invokes it as a fallback when you do not supply a driver, so manual downloads and PATH changes are often unnecessary.

  1. Check the binding version used by the environment that runs your test.
  2. Upgrade that binding, then rerun the test without an explicit driver path.
  3. Read the new error, if any. A driver-discovery message means the manager could not complete its work; a session-creation or version error means the executable was found and compatibility needs attention.

For Python, update the package in the same environment as the test:

python -m pip install --upgrade selenium

Then use the normal constructor without a manually downloaded executable:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
from selenium import webdriver

with webdriver.Chrome() as driver:
    driver.get("https://example.com")
    print(driver.title)

Do not assume that upgrading your system Python, IDE, or another virtual environment upgraded the interpreter that launches the test. Print the Selenium version and the Python executable from that exact process when diagnosing an environment mismatch.

Set up PATH manually when you need control

Use this route when a policy requires a pinned binary, Selenium Manager cannot run in your environment, or you need the same executable location for several tools. PATH must contain the directory holding the extracted driver.

Windows

  1. Extract the Windows ChromeDriver package to a stable directory such as C:toolschromedriver. The directory should contain chromedriver.exe, not just the downloaded ZIP.
  2. Open System Properties → Advanced → Environment Variables.
  3. Under either User variables or System variables, select Path → Edit → New, and add the directory, for example C:toolschromedriver.
  4. Confirm the dialogs, close existing Command Prompt, PowerShell, IDE, service, or agent processes, and start a new one. Existing processes keep their old environment.
  5. Verify discovery:
chromedriver --version

If Command Prompt reports that chromedriver is not recognized, the new process did not receive the change or the directory is incorrect. Check the effective value with:

echo %PATH%

Use a Windows driver binary and Windows path syntax. A Linux or macOS executable cannot be made usable by adding it to a Windows PATH.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #2
HP 14" HD Chromebook Laptop for Students, Intel Quad-Core N4120(> N4020), 4GB RAM, 64GB eMMC, WiFi, Webcam, HDMI, USB-A&C, 14 Hours Battery Life, Zoom, Chrome OS, CUE Accessories
  • Intel Celeron N4120: 4 Cores & Threads, 1.1GHz Base Clock, Up to 2.6GHz Boost Clock, 4MB Cache, Intel UHD Graphics 600. The perfect combination of performance, power consumption, and value helps your device handle multitasking smoothly and reliably with four processing cores to divide up the work.
  • 14" HD Display: 14.0-inch diagonal, HD (1366 x 768), micro-edge, anti-glare. See your digital world in a whole new way. Enjoy movies and photos with the great image quality and high-definition detail of 1 million pixels.
  • Memory & Storage: 4 GB LPDDR4x & 64 GB eMMC Storage. Adequate high-bandwidth RAM to smoothly run multiple applications and browser tabs all at once. An embedded multimedia card provides reliable flash-based storage.
  • Ports:2 x USB 3.0 Type-A,1 x USB 3.0 Type-C,1 x HDMI,1 x Headphone Jack
  • Chrome OS: Chromebook is a computer for the way the modern world works, with thousands of apps. Enjoy the seamless simplicity that comes with Google Chrome and Android apps, all integrated into one laptop. It’s fast, simple, and secure.

macOS

  1. Place the macOS ChromeDriver binary in a directory you control, such as ~/bin.
  2. Make sure the file is executable:
chmod +x ~/bin/chromedriver
  1. Add the directory, not the file, to the startup file used by your shell. For example:
export PATH="$PATH:$HOME/bin"
  1. Reload that file or open a new terminal, then verify:
chromedriver --version

If you launch tests from an IDE, launch agent, or service, check that it receives the same PATH as the terminal. macOS permissions or Gatekeeper can produce a separate execution error after PATH discovery is fixed; that is not the same failure as “needs to be in PATH.”

Linux

  1. Extract the Linux ChromeDriver binary into a stable directory, such as $HOME/bin or a directory managed by your deployment.
  2. Grant execute permission:
chmod +x /path/to/driver/chromedriver
  1. Add its containing directory to the shell startup file:
export PATH="$PATH:/path/to/driver"
  1. Reload the shell configuration or start a new shell and run:
echo $PATH
chromedriver --version

For a systemd service, Docker container, scheduled job, or CI runner, configure PATH in that execution environment. An interactive shell’s PATH is not automatically inherited by every service or container.

Use an explicit driver path instead of PATH

An explicit service path is a valid fallback when you cannot alter the environment or need a deterministic binary. In Python, pass the executable to Selenium’s Service object:

from pathlib import Path
from selenium import webdriver
from selenium.webdriver.chrome.service import Service

chromedriver = Path('/opt/webdrivers/chromedriver')
if not chromedriver.is_file():
    raise FileNotFoundError(f'ChromeDriver not found: {chromedriver}')

service = Service(executable_path=str(chromedriver))
options = webdriver.ChromeOptions()

with webdriver.Chrome(service=service, options=options) as driver:
    driver.get('https://example.com')
    print(driver.title)

On Windows, use a Windows path such as Path(r'C:toolschromedriverchromedriver.exe'). Keep the path outside application logic when possible: an environment variable or CI secret makes it easier to use different locations on developer machines and runners. The file still has to exist, be executable, and match the operating system.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

When an explicit path is preferable

  • You must reproduce a build with one pinned driver binary.
  • Outbound network access is restricted and automatic management cannot obtain drivers.
  • Your test runner has a deliberately minimal PATH.
  • Several driver versions are installed and a particular suite must select one.

The trade-off is maintenance: you must update and distribute that binary yourself when Chrome changes.

Check compatibility after discovery succeeds

If chromedriver --version works but Selenium now reports that it cannot create a session, compare the Chrome browser version with the ChromeDriver version. A PATH fix only answers “where is the executable?” It does not guarantee that the two components can communicate.

  • Confirm that the test is launching the Chrome installation you expect, especially on machines with multiple browser channels.
  • Confirm that the driver binary is from the same operating-system family as the test host.
  • Remove stale manually downloaded binaries from PATH when you intend Selenium Manager to choose a compatible pair.
  • In a controlled build, pin and update the browser and driver together rather than allowing an old driver to remain first in PATH.

Let Selenium Manager resolve a compatible pair where your environment permits it. If it cannot, install a compatible driver deliberately and pass its path through Service.

Rank #3
HP Chromebook 14 Laptop, Intel Celeron N4120, 4 GB RAM, 64 GB eMMC, 14" HD Display, Chrome OS, Thin Design, 4K Graphics, Long Battery Life, Ash Gray Keyboard (14a-na0226nr, 2022, Mineral Silver)
  • FOR HOME, WORK, & SCHOOL – With an Intel processor, 14-inch display, custom-tuned stereo speakers, and long battery life, this Chromebook laptop lets you knock out any assignment or binge-watch your favorite shows..Voltage:5.0 volts
  • HD DISPLAY, PORTABLE DESIGN – See every bit of detail on this micro-edge, anti-glare, 14-inch HD (1366 x 768) display (1); easily take this thin and lightweight laptop PC from room to room, on trips, or in a backpack.
  • ALL-DAY PERFORMANCE – Reliably tackle all your assignments at once with the quad-core, Intel Celeron N4120—the perfect processor for performance, power consumption, and value (2).
  • 4K READY – Smoothly stream 4K content and play your favorite next-gen games with Intel UHD Graphics 600 (3) (4).
  • MEMORY AND STORAGE – Enjoy a boost to your system’s performance with 4 GB of RAM while saving more of your favorite memories with 64 GB of reliable flash-based eMMC storage (5).

Compare the available fixes

Approach Best use Maintenance Control and reproducibility Typical failure to watch
Selenium Manager Current Selenium installations and ordinary local tests Lowest; Selenium performs driver management as a fallback Less control over the exact binary; behavior depends on the execution environment Restricted network, unsupported environment, or manager failure
PATH directory Shared command-line, IDE, or service configuration Medium; you maintain the installed binary and PATH Convenient, but the first matching executable in each process’s PATH wins Wrong directory, stale shell, or different PATH in CI
Explicit Service path Pinned binaries, isolated runners, and deterministic builds Highest; you distribute and update the binary Highest control when the path is configured per environment Missing file, permission error, or incompatible driver

Troubleshoot the common symptoms

“chromedriver” is not recognized or command not found

The shell cannot see the directory. Check the spelling, confirm that the extracted file is present, reload the shell, and run echo %PATH% on Windows or echo $PATH on macOS/Linux. Then run chromedriver --version again.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The file exists but Selenium still reports the PATH error

The Selenium process may not be the shell you tested. Restart the IDE, test worker, service, container, or CI job. If that is impractical, pass the absolute path through Service and log the resolved path before creating the driver.

Permission denied or an execution error

On macOS/Linux, verify execute permission and that the binary matches the host operating system. On macOS, address any Gatekeeper or security prompt shown after the PATH problem is gone. On Windows, use chromedriver.exe rather than a Unix binary.

“Unable to obtain driver” after upgrading Selenium

Selenium Manager was invoked but could not complete driver management. Check the runner’s network and filesystem restrictions, then use a compatible, explicitly managed driver path if automatic management is unsuitable.

“Session not created” or “only supports Chrome version …”

Discovery is working; compatibility is not. Compare the browser and driver versions, remove stale PATH entries, or allow Selenium Manager to select a compatible pair. Do not keep changing PATH when the error has moved to session creation.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

It works locally but fails in CI or a container

Inspect the CI job or container’s PATH, filesystem, permissions, browser installation, and architecture. Copying a host PATH into a container does not copy the executable. Configure the driver directory in the job image or use an explicit path that exists inside the runner.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Make the fix reliable in teams and CI

  • Document whether the project relies on Selenium Manager, PATH, or an explicit service path.
  • Run chromedriver --version as a preflight check and include its output in failed-job logs.
  • Use absolute, environment-specific paths rather than assuming a developer’s home directory exists on a runner.
  • Keep browser and driver updates in the same change when you pin binaries.
  • Test from the same launch mechanism used in production: an IDE terminal is not equivalent to a service account or container entrypoint.
  • Do not place a ZIP archive on PATH; extract the executable first.

Or skip the browser setup

If your goal is to obtain website screenshots rather than automate a Chrome session, ScreenshotNeo returns a screenshot or PDF from one HTTP request, so there is no local ChromeDriver installation to maintain. Before capture it accepts cookie or consent banners and removes more than 60 known consent platforms, newsletter popups, and chat widgets; each cleanup step can be disabled.

Only clean shots are billed. Bot checks or CAPTCHAs, blank pages, timeouts, failed loads, and cache hits cost nothing, and the response identifies the result with X-Page-Verdict and X-Billed headers. ScreenshotNeo also provides an MCP server with take_screenshot, get_page_info, and capture_pdf tools for Claude, Cursor, and other MCP clients.

Rank #4
HP 14 2-in-1 Chromebook 14in FHD Intel CPU 4GB 64GB Storage (14b-Renewed)
  • 14" fhd ips touchscreen display with 360 flip; Intel 4k graphics
  • Intel n100 processor 4-core up to 3.40ghz, 4gb ddr5 ram, 64gb storage
  • 1x usb type c, 1x usb type a, 1x headphone microphone jack,
  • Super fast 6th gen wifi and bluetooth 5, 720p webcam with integrated dual array digital microphones
  • Chrome os, serenity blue color, ac charger included

See the ScreenshotNeo documentation for request options. A minimal cURL request is:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp

Python:

import requests; r = requests.get("https://api.screenshotneo.com/v1/shot", params={"access_key": "YOUR_API_KEY", "url": "https://stripe.com"}, timeout=90); open("shot.webp", "wb").write(r.content)

Node.js:

const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' }); const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);

The Free plan includes 1,000 screenshots per month with no card. Paid plans start at $5 for 3,000 shots; yearly billing provides two months free, and every feature is available on every plan. Create a free ScreenshotNeo account to try it without a card.

FAQ

Does changing PATH change which Chrome browser Selenium opens?

No. PATH controls how the operating system locates the ChromeDriver executable. The browser installation is a separate concern; configure the browser binary explicitly only when your host has multiple installations or a nonstandard location.

Can I keep both Selenium Manager and a manually installed driver?

Yes, but be intentional. Supplying a service path selects that binary, while omitting one allows Selenium’s fallback behavior. Leaving an old driver earlier in PATH can make troubleshooting confusing, so remove stale entries when switching strategies.

Frequently Asked Questions

Does changing PATH change which Chrome browser Selenium opens?

No. PATH locates ChromeDriver; the Chrome browser installation is separate and can be configured independently.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Can I keep both Selenium Manager and a manually installed driver?

Yes. An explicit Service path selects the binary you provide; otherwise Selenium can use its driver-management fallback. Remove stale PATH entries when switching strategies.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.