SeleniumHQ/selenium · error · anyhow::Error

not available for download

Error message

{} not available for download

What it means

Returned by SafariTPManager::get_driver_url(). Safari Technology Preview's safaridriver is local (inside the .app bundle) and is never downloaded, so the method errors by design. The placeholder is the driver name.

Solutions

  1. Install Safari Technology Preview from Apple and use its bundled safaridriver.
  2. Do not request a download for SafariTP; rely on the local driver path.
  3. If SafariTP is unavailable, switch to the stable Safari manager.
Defensive patterns

Strategy: fallback

Prevention

When it happens

Trigger: Any code path that calls get_driver_url() on the SafariTPManager (safaritp.rs:111-116); the local path is /Applications/Safari Technology Preview.app/Contents/MacOS/safaridriver.

Common situations: Safari Technology Preview not installed but selected as the browser; a flow that tries to download the TP driver instead of using the local one.

Related errors


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

Appendix: source

Thrown at rust/src/safaritp.rs:112

    fn discover_browser_version(&mut self) -> Result<Option<String>, Error> {
        self.discover_safari_version(SAFARITP_FULL_PATH.to_string())
    }

    fn get_driver_name(&self) -> &str {
        self.driver_name
    }

    fn request_driver_version(&mut self) -> Result<String, Error> {
        Ok("(local)".to_string())
    }

    fn request_browser_version(&mut self) -> Result<Option<String>, Error> {
        Ok(None)
    }

    fn get_driver_url(&mut self) -> Result<String, Error> {
        Err(anyhow!(format!(
            "{} not available for download",
            self.get_driver_name()
        )))
    }

    fn get_driver_path_in_cache(&self) -> Result<PathBuf, Error> {
        Ok(PathBuf::from(
            "/Applications/Safari Technology Preview.app/Contents/MacOS/safaridriver",
        ))
    }

    fn get_config(&self) -> &ManagerConfig {
        &self.config
    }

    fn get_config_mut(&mut self) -> &mut ManagerConfig {
        &mut self.config
    }

View on GitHub (pinned to aa36b38e69)