SeleniumHQ/selenium · error · anyhow::Error
Invalid browser name
Error message
Invalid browser name: {browser_name} What it means
Returned by get_manager_by_browser() when the lowercased browser name matches none of chrome, firefox, edge, ie, safari, safaritp, or electron. The browser name is interpolated verbatim (original case) in the message.
Solutions
- Use one of the supported names: chrome, firefox, edge, ie, safari, safaritp, electron.
- For Chromium-based browsers not in the list, configure them via the Chrome manager path or use a manual driver.
- Trim whitespace and check for typos.
Example fix
# before selenium-manager --browser opera # after selenium-manager --browser chrome # route Opera via chromium engine
Defensive patterns
Strategy: type-guard
Type guard
const SUPPORTED_BROWSERS: &[&str] = &["chrome","firefox","edge","ie","safari","safaritp","electron"];
fn is_supported_browser(name: &str) -> bool {
SUPPORTED_BROWSERS.contains(&name.to_ascii_lowercase().trim())
}
if !is_supported_browser(&browser) {
return Err(anyhow!("invalid browser name: {browser}"));
} Prevention
- Whitelist browser names at the configuration layer before passing them to Selenium Manager.
- Trim and lowercase user-supplied browser names.
- Route non-listed Chromium browsers through the Chrome manager.
When it happens
Trigger: get_manager_by_browser(browser_name) is called with a string that, after to_ascii_lowercase(), equals none of the recognized names (lib.rs:1717-1735).
Common situations: Typo (e.g. "crome"); passing a vendor name Selenium Manager does not route directly (Opera, Brave) instead of the chromium engine; trailing whitespace; unsupported browser.
Related errors
- Invalid driver name
- Invalid operating system
- Wrong version
- A WebDriver instance must be supplied
- Add-on id could not be found.
AI-assisted analysis of SeleniumHQ/selenium@aa36b38e69 (2026-08-14).
Data as JSON: /api/errors/91923cf0ca3b50b6.
Report an issue: GitHub.
Appendix: source
Thrown at rust/src/lib.rs:1734
pub fn get_manager_by_browser(browser_name: String) -> Result<Box<dyn SeleniumManager>, Error> {
let browser_name_lower_case = browser_name.to_ascii_lowercase();
if browser_name_lower_case.eq(CHROME_NAME) {
Ok(ChromeManager::new()?)
} else if browser_name_lower_case.eq(FIREFOX_NAME) {
Ok(FirefoxManager::new()?)
} else if EDGE_NAMES.contains(&browser_name_lower_case.as_str()) {
Ok(EdgeManager::new_with_name(browser_name)?)
} else if IE_NAMES.contains(&browser_name_lower_case.as_str()) {
Ok(IExplorerManager::new()?)
} else if browser_name_lower_case.eq(SAFARI_NAME) {
Ok(SafariManager::new()?)
} else if SAFARITP_NAMES.contains(&browser_name_lower_case.as_str()) {
Ok(SafariTPManager::new()?)
} else if browser_name_lower_case.eq(ELECTRON_NAME) {
Ok(ElectronManager::new()?)
} else {
Err(anyhow!(format!("Invalid browser name: {browser_name}")))
}
}
pub fn get_manager_by_driver(driver_name: String) -> Result<Box<dyn SeleniumManager>, Error> {
if driver_name.eq_ignore_ascii_case(CHROMEDRIVER_NAME) {
Ok(ChromeManager::new()?)
} else if driver_name.eq_ignore_ascii_case(GECKODRIVER_NAME) {
Ok(FirefoxManager::new()?)
} else if driver_name.eq_ignore_ascii_case(EDGEDRIVER_NAME) {
Ok(EdgeManager::new()?)
} else if driver_name.eq_ignore_ascii_case(IEDRIVER_NAME) {
Ok(IExplorerManager::new()?)
} else if driver_name.eq_ignore_ascii_case(SAFARIDRIVER_NAME) {
Ok(SafariManager::new()?)
} else {
Err(anyhow!(format!("Invalid driver name: {driver_name}")))
}
}View on GitHub (pinned to aa36b38e69)