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.

If Selenium’s Chrome headless run has started failing, first identify whether Chrome failed to launch, ChromeDriver cannot find or control the browser, or the browser launched but behaves differently without a visible window. Those are different problems with different fixes. Record the exact exception and your Selenium, Chrome, and ChromeDriver versions before changing flags or reinstalling anything. Selenium’s Chrome documentation says Chrome and ChromeDriver should match at the major-version level.

Start by identifying which part failed

Selenium sends commands to Chrome through ChromeDriver. Headless mode changes how Chrome is launched; it does not remove the need for a working browser binary, a compatible driver, and the operating-system runtime Chrome needs. An error about a missing driver is not the same as Chrome starting and then crashing.

  1. Capture the exact exception and logs. Save the full stack trace, ChromeDriver output, and any browser startup logs. Note whether the failure happens while creating the WebDriver session, during navigation, or later in the test.
  2. Record the environment. Write down the Selenium binding and version, Chrome version, ChromeDriver version, operating system and architecture, and whether the run is local, in a container, in CI, or under a service account.
  3. Compare browser and driver versions. Check the major version numbers first. If Chrome updated but ChromeDriver remained pinned, select a driver compatible with the installed browser or update both as a controlled pair.
  4. Run a minimal launch. Remove unrelated test code and optional flags, launch one page, and capture the resulting exception and driver logs. This helps distinguish setup failure from application-specific behavior.

Selenium’s Chrome guidance describes Selenium 4 as compatible with Chrome 75 and later by default, but that floor does not replace checking the installed browser and driver pair. The compatibility check that matters for this error is the major-version match.

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

Fix a Chrome and ChromeDriver version mismatch

An error such as “ChromeDriver only supports Chrome version …” points to a version mismatch, not a headless-only defect. Check the actual Chrome binary Selenium is launching; a machine can have more than one browser installation, especially in a container or custom Linux image. Then make ChromeDriver compatible with that browser’s major version.

  • If Chrome updates automatically, avoid leaving a permanently pinned old driver behind. Update the driver alongside Chrome, or deliberately pin both components to compatible versions.
  • If a test image intentionally pins Chrome, pin a compatible ChromeDriver in the same image and update the pair together.
  • If Selenium Manager is resolving the driver, check its logs and network access before also adding a separate driver-management mechanism.

Do not infer that the browser and driver match merely because both are installed or because the script worked previously. Browser updates can change the installed major version between runs.

Use the supported headless mode for your Chrome binary

Headless is a Chrome launch mode, not a separate Selenium driver. Selenium’s Chrome examples use Chrome options and include --headless=new among commonly used arguments. Chrome’s documentation says that headless and headful modes now share Chrome’s browser code. Starting with Chrome 132.0.6793.0, the old headless implementation is available only as a separate chrome-headless-shell binary.

If a setup assumes that legacy headless is bundled in the regular Chrome binary, check whether it explicitly provisions the standalone shell and whether the application truly depends on its behavior. Otherwise, use the current Chrome headless mode and troubleshoot it as a regular Chrome launch. Do not treat Selenium 4.10.0 as the point at which Chrome headless support disappeared: the Selenium 2023 transition announcement concerned removal of a Selenium convenience method, not removal of Chrome headless itself.

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

Minimal Python launch to isolate the problem

This small example uses Selenium’s Chrome options, starts a headless session, visits a page, prints its title, and closes the session. It leaves driver resolution to Selenium when no driver is supplied explicitly. Install Selenium in the same Python environment that runs the script, and make sure that environment can access the browser and any downloads Selenium Manager needs.

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = Options()
options.add_argument("--headless=new")

# Add --no-sandbox only if it is appropriate for your deployment.
# It is not a universal startup fix or security recommendation.
# options.add_argument("--no-sandbox")

driver = webdriver.Chrome(options=options)
try:
    driver.get("https://example.com")
    print(driver.title)
finally:
    driver.quit()

Keep the initial test small. Add your normal options one at a time after this launch works. In particular, do not add flags copied from an unrelated container recipe without confirming that they address the error you see.

Resolve a missing or undiscoverable driver

“Unable to locate driver executable” or a similar driver-discovery message means Selenium has not found a usable ChromeDriver. It does not establish that Chrome itself crashes. Use one driver-management route:

  • Let Selenium Manager resolve it. Selenium Manager is included with Selenium releases and acts as a fallback when a driver has not been supplied explicitly. Its browser and driver discovery may require access to remote endpoints.
  • Provide a managed driver explicitly. If your environment pins a particular binary or cannot use Selenium Manager, configure the supported driver path for your Selenium binding and deployment. Verify that the path exists, is executable, and points to a driver compatible with the Chrome binary in use.

Avoid configuring Selenium Manager and a conflicting manually supplied driver at the same time. In containers and CI, check the path inside the running job or container—not just on the host machine.

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

When Selenium Manager cannot download or select a driver

Selenium Manager cannot guarantee automatic setup in every environment. Its documented failure cases include network errors querying Chrome for Testing endpoints, restricted proxy, firewall, or DNS access, custom Linux package managers that require a particular browser binary, and unsupported architectures. Linux arm64/aarch64 and some other architectures are documented as unsupported by Selenium Manager. When automatic resolution cannot operate, provide a compatible driver through a controlled, explicit path.

Read the Selenium Manager error closely. A network error suggests checking outbound access, proxy configuration, DNS, or firewall policy. A custom-package message suggests configuring the browser binary expected by that distribution. A missing shared-library message is a system dependency problem, not a driver-version mismatch.

Diagnose Chrome exiting or crashing at startup

If ChromeDriver reports that Chrome exited or crashed immediately, preserve the ChromeDriver logs and use the ChromeDriver startup troubleshooting guidance to investigate. Reproduce the launch outside the full test where possible, using the same account, browser binary, and environment. An interactive local session can succeed while a CI service or container fails because its libraries, permissions, paths, or network access differ.

  • Check the browser path and account. Confirm the binary exists and is readable by the process that runs the test. A service account may not have the same environment or permissions as your login.
  • Check runtime libraries in Linux images. A missing shared library can prevent Chrome from launching even when ChromeDriver is correct. Selenium Manager documentation gives libatk-1.0.so.0 as an example error and identifies libatk-bridge2.0-0 as the package to install for that described case. Apply that package guidance only when the actual error and distribution match; it is not a general fix for every crash.
  • Check container and CI differences. Verify the installed libraries, architecture, browser binary, permissions, and availability of downloads in the image or job that fails. Compare those details with the working environment.
  • Retain logs while removing variables. Temporarily remove nonessential arguments and test setup, then add required configuration back incrementally.

The Selenium Chrome page shows --no-sandbox as an example option. That does not make it a universal security or stability recommendation. Use it only when the deployment context and failure justify it.

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

When Chrome launches but the test behaves differently

A successful session followed by a timeout, missing element, or unexpected page is not necessarily a browser-startup failure. Inspect the failure point and logs before changing the driver setup. Headless mode still runs Chrome; it does not guarantee that a site will present the same content or timing as a visible session. Reproduce the specific navigation or interaction with the same browser, driver, options, and environment, then investigate the page or wait condition that actually fails.

Choose driver management and headless binaries deliberately

Choice Useful when Trade-off to check
Selenium Manager fallback You have no explicit driver and the environment can resolve and download the required assets. Network restrictions, custom browser packages, or an unsupported architecture can prevent resolution.
Explicit, pinned driver path You need a controlled binary or automatic resolution is unavailable. You must keep the chosen driver compatible with the Chrome binary and maintain the path in each runtime.
Current Chrome headless mode You want headless operation with the regular Chrome browser code. Check that the actual browser binary is present and starts in the target environment.
Standalone chrome-headless-shell You intentionally need the old headless implementation and provision that binary. From Chrome 132.0.6793.0 onward, the old implementation is separate rather than bundled in regular Chrome.
Local interactive execution You are isolating whether the basic browser and driver pair can launch. Success locally does not establish that a service, container, or CI image has the same libraries, permissions, paths, or network access.

Performance, reliability, and maintenance

For repeatable automation, treat the browser, driver, Selenium binding, and operating-system image as one environment. Record their versions in the job output, update compatible browser-driver pairs deliberately, and run a small launch check after changing the image or browser. In a restricted CI network, decide in advance whether the job will resolve drivers dynamically or use a managed binary; the first depends on access to remote endpoints, while the second requires maintaining the binary and path.

Do not add flags as a substitute for logs. A flag can alter security or browser behavior without fixing a missing driver, incompatible version, blocked download, or absent shared library. Preserve the original exception and change one relevant variable at a time.

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

Or skip the browser setup

If the goal is to capture a website image or PDF rather than automate a browser interaction, ScreenshotNeo provides a one-request screenshot API and an MCP server for AI agents. Its capture flow accepts cookie or consent banners and removes more than 60 known consent platforms, newsletter popups, and chat widgets before capture; those steps can be turned off. Bot checks or CAPTCHAs, blank pages, timeouts, failed loads, and cache hits are not billed, and responses include X-Page-Verdict and X-Billed headers. Its MCP tools include take_screenshot, get_page_info, and capture_pdf.

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.

For full Selenium control, continue with the diagnosis above. For a screenshot, a single API call may be simpler. See the ScreenshotNeo API documentation for parameters and response details.

cURL

curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://example.com -o shot.webp

Python

import requests

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

Node.js

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

ScreenshotNeo also supports full-page captures, CSS-element capture, device and viewport settings, retina scale, custom CSS or JavaScript, PDF options, request blocking, cookies and headers, caching, async jobs, bulk capture, and signed image links. Its published plans include 1,000 screenshots a month free with no card; paid plans start at $5 for 3,000. Learn about ScreenshotNeo, or sign up for 1,000 free screenshots a month with no card.

Frequently Asked Questions

Does Selenium 4.10.0 mean Chrome headless is no longer supported?

No. The Selenium 2023 announcement discussed removal of a Selenium convenience method. It did not announce removal of Chrome headless support.

Does headless mode remove the need to install Chrome?

No. Headless is a launch mode. Chrome still needs a compatible driver and the runtime dependencies required by the operating system.

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 assume Selenium Manager will work on Linux ARM?

No. Selenium Manager documents Linux arm64/aarch64 and some other architectures as unsupported; a managed driver path may be needed.

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.