SeleniumHQ/selenium · critical · WebDriverException

Unsupported platform/architecture combination: {sys.platform

Error message

Unsupported platform/architecture combination: {sys.platform}/{arch}

What it means

Raised by SeleniumManager._get_binary() when the running OS/architecture pair is not in the hardcoded 'allowed' table of bundled Selenium Manager binaries. The table only covers darwin (any arch), win32/cygwin (x86_64), and linux/freebsd/openbsd (x86_64). The library cannot locate a manager binary for any other combination and has no fallback, so driver auto-management fails before any browser launches.

Source

Thrown at py/selenium/webdriver/common/selenium_manager.py:117

            # some operating systems report x86-64 architecture as amd64/AMD64
            platform_name = sys.platform
            arch = "any" if platform_name == "darwin" else platform.machine().lower()
            arch = "x86_64" if arch == "amd64" else arch

            # in Python < 3.14, sys.platform appends version number to BSD platform names
            if platform_name.startswith("freebsd"):
                logger.warning(
                    "Selenium Manager binary may not be compatible with FreeBSD; you may need to run "
                    "'brandelf -t linux' on it and load linux64.ko"
                )
                platform_name = "freebsd"
            elif platform_name.startswith("openbsd"):
                logger.warning("Selenium Manager binary may not be compatible with OpenBSD; verify settings")
                platform_name = "openbsd"

            location = allowed.get((platform_name, arch))
            if location is None:
                raise WebDriverException(f"Unsupported platform/architecture combination: {sys.platform}/{arch}")

            path = Path(__file__).parent.joinpath(location)

        if path is None or not path.is_file():
            raise WebDriverException(f"Unable to obtain working Selenium Manager binary; {path}")

        logger.debug(f"Selenium Manager binary found at: {path}")

        return path

    @staticmethod
    def _run(args: list[str]) -> dict:
        """Executes the Selenium Manager Binary.

        Args:
            args: the components of the command being executed.

        Returns:

View on GitHub (pinned to aa36b38e69)

Solutions

  1. Set SE_MANAGER_PATH to an absolute path of a selenium-manager binary you compiled or downloaded for your platform: export SE_MANAGER_PATH=/usr/local/bin/selenium-manager
  2. Build the Rust selenium-manager binary from source (see rust/ directory) targeting your platform and let it be found via the compiled_path check.
  3. Run on a supported x86_64/amd64 or darwin host, or use an x86_64 Docker image.
  4. If on darwin, confirm platform.machine() is not empty; darwin uses arch 'any' so any Apple Silicon Mac works once sys.platform is 'darwin'.

Example fix

// before (running on linux aarch64 with no env var)
//   -> WebDriverException: Unsupported platform/architecture combination: linux/aarch64

# after — point to a prebuilt/compiled binary
export SE_MANAGER_PATH=/opt/selenium-manager/selenium-manager
Defensive patterns

Strategy: validation

Validate before calling

import sys, platform
_SUPPORTED = {('darwin','any'),('win32','x86_64'),('cygwin','x86_64'),('linux','x86_64'),('freebsd','x86_64'),('openbsd','x86_64')}
name = sys.platform
arch = 'any' if name == 'darwin' else platform.machine().lower()
arch = 'x86_64' if arch == 'amd64' else arch
if name.startswith('freebsd'): name = 'freebsd'
elif name.startswith('openbsd'): name = 'openbsd'
if (name, arch) not in _SUPPORTED and not os.getenv('SE_MANAGER_PATH'):
    raise SystemExit('Set SE_MANAGER_PATH to a selenium-manager binary for this platform')

Type guard

null

Try / catch

from selenium.common.exceptions import WebDriverException
try:
    driver = webdriver.Chrome()
except WebDriverException as e:
    if 'Unsupported platform/architecture' in str(e):
        # set SE_MANAGER_PATH or build the binary
        ...

Prevention

When it happens

Trigger: Running on an unsupported platform such as Linux aarch64/arm64, Windows ARM64, or any non-x86_64 Linux/BSD. The error fires only when neither the SE_MANAGER_PATH env var nor a compiled local binary is present, forcing the code into the allowed-dict lookup at selenium_manager.py:115.

Common situations: CI on ARM64 GitHub Actions runners or Apple Silicon under Rosetta-less Python, Docker images built on arm64v8 base images, Raspberry Pi, and any corporate-locked Windows ARM device. Also triggered after a partial/corrupt pip install that omits the platform subfolder.

Related errors


AI-assisted analysis of SeleniumHQ/selenium@aa36b38e69 (2026-08-14). Data as JSON: /api/errors/dbb2dfd18b21ac4a. Report an issue: GitHub.