Fosowl/agenticSeek · critical · FileNotFoundError
ChromeDriver not found and could not be installed automatica
Error message
ChromeDriver not found and could not be installed automatically. Please install it manually from https://chromedriver.chromium.org/downloads.and ensure it's in your PATH or specify the path directly.See know issues in readme if your chrome version is above 115.
What it means
install_chromedriver() first tries chromedriver_autoinstaller.install(); if that throws (download failure, no matching driver for the Chrome version, offline, etc.) it wraps the cause in this FileNotFoundError. It signals that Selenium cannot proceed without a ChromeDriver binary and the auto-installer could not provide one.
Source
Thrown at sources/browser.py:140
chromedriver_path = shutil.which("chromedriver")
if chromedriver_path:
if is_chromedriver_compatible(chromedriver_path):
return chromedriver_path
print(f"System ChromeDriver at {chromedriver_path} is outdated, attempting auto-update...")
# In Docker environment, try the fixed path
if os.path.exists('/.dockerenv'):
docker_chromedriver_path = "/usr/local/bin/chromedriver"
if os.path.exists(docker_chromedriver_path) and os.access(docker_chromedriver_path, os.X_OK):
print(f"Using Docker ChromeDriver at {docker_chromedriver_path}")
return docker_chromedriver_path
# Auto-install matching ChromeDriver version
try:
print("Installing matching ChromeDriver version automatically...")
chromedriver_path = chromedriver_autoinstaller.install()
except Exception as e:
raise FileNotFoundError(
"ChromeDriver not found and could not be installed automatically. "
"Please install it manually from https://chromedriver.chromium.org/downloads."
"and ensure it's in your PATH or specify the path directly."
"See know issues in readme if your chrome version is above 115."
) from e
if not chromedriver_path:
raise FileNotFoundError("ChromeDriver not found. Please install it or add it to your PATH.")
return chromedriver_path
def bypass_ssl() -> str:
"""
This is a fallback for stealth mode to bypass SSL verification. Which can fail on some setup.
"""
pretty_print("Bypassing SSL verification issues, we strongly advice you update your certifi SSL certificate.", color="warning")
ssl._create_default_https_context = ssl._create_unverified_context
def get_free_port() -> int:View on GitHub (pinned to ae57a23577)
Solutions
- Install ChromeDriver manually from https://chromedriver.chromium.org/downloads (or Chrome for Testing endpoints for 115+) matching your Chrome major version, and put it on PATH or pass its path to the driver factory.
- Update Chrome and the chromedriver-autoinstaller/selenium packages to latest so version matching works.
- For Chrome 115+, use Chrome for Testing + matching ChromeDriver per the project readme's known issues.
- Check network/proxy settings; set HTTPS_PROXY so the auto-installer can download, or pre-install the driver in the image.
Example fix
// before driver = create_driver() # FileNotFoundError: ChromeDriver not found... // after # matching version installed and on PATH subprocess.run(["apt-get", "install", "-y", "chromium-chromedriver"], check=True) driver = create_driver()
Defensive patterns
Strategy: fallback
Validate before calling
import shutil, subprocess
def chromedriver_ready() -> bool:
if shutil.which("chromedriver") is None:
return False
return subprocess.run(["chromedriver", "--version"],
capture_output=True).returncode == 0
if not chromedriver_ready():
print("Install matching ChromeDriver from https://chromedriver.chromium.org/downloads") Try / catch
try:
driver = create_driver()
except FileNotFoundError as e:
if "ChromeDriver not found and could not be installed" in str(e):
driver = create_driver(driver_path=manually_installed_chromedriver) # explicit path
else:
raise Prevention
- Pin Chrome and ChromeDriver to the same major version in your environment/Dockerfile.
- Install ChromeDriver in the base image so runtime downloads are unnecessary.
- For Chrome 115+, use Chrome for Testing endpoints as the readme suggests.
- Configure HTTPS_PROXY in CI so the auto-installer can reach download hosts.
When it happens
Trigger: create_driver -> install_chromedriver when chromedriver_autoinstaller.install() raises: no internet access, Chrome version has no matching driver, Chrome not installed/undetectable, or corporate proxy blocking the download.
Common situations: Chrome 115+ where older selenium-manager/autoinstaller lookup paths changed (the message explicitly points to readme known issues); CI containers without Chrome installed; offline or proxied networks; mismatched Chrome/ChromeDriver major versions.
Related errors
- ChromeDriver not found. Please install it or add it to your
- Google Chrome not found. Please install it.
- Failed to initialize browser: {str(e)}
- Could not find: {path}
AI-assisted analysis of Fosowl/agenticSeek@ae57a23577 (2026-08-30).
Data as JSON: /api/errors/797dd6eab1b922d9.
Report an issue: GitHub.