Answer
WebDriverManager in Selenium
Without WebDriverManager, you must manually download chromedriver.exe, match its version to the installed Chrome, and set the system property path. This breaks every time Chrome auto-updates.
Manual Setup (Old Way — Error-Prone)
Java
// Bad — breaks when Chrome updates
System.setProperty("webdriver.chrome.driver", "C:/drivers/chromedriver.exe");
WebDriver driver = new ChromeDriver();
WebDriverManager (Modern Way)
XML
<!-- pom.xml -->
<dependency>
<groupId>io.github.bonigarcia</groupId>
<artifactId>webdrivermanager</artifactId>
<version>5.7.0</version>
</dependency>
Java
// Automatically downloads correct chromedriver for installed Chrome
WebDriverManager.chromedriver().setup();
WebDriver driver = new ChromeDriver();
All Supported Browsers
Java
WebDriverManager.chromedriver().setup(); // Chrome
WebDriverManager.firefoxdriver().setup(); // Firefox (geckodriver)
WebDriverManager.edgedriver().setup(); // Edge
WebDriverManager.safaridriver().setup(); // Safari
WebDriverManager.operadriver().setup(); // Opera
WebDriverManager.chromiumdriver().setup(); // Chromium
Advanced Configuration
Java
// Force a specific driver version
WebDriverManager.chromedriver().driverVersion("114.0.5735.90").setup();
// Use specific browser version
WebDriverManager.chromedriver().browserVersion("114").setup();
// Use proxy for corporate networks
WebDriverManager.chromedriver()
.proxy("http://proxy.company.com:8080")
.setup();
// Cache drivers locally (useful for offline CI environments)
WebDriverManager.chromedriver()
.cachePath("/opt/selenium-drivers")
.setup();
Using with Different Browser Configs
Java
public WebDriver initDriver(String browser) {
return switch (browser.toLowerCase()) {
case "chrome" -> { WebDriverManager.chromedriver().setup();
yield new ChromeDriver(); }
case "firefox" -> { WebDriverManager.firefoxdriver().setup();
yield new FirefoxDriver(); }
case "edge" -> { WebDriverManager.edgedriver().setup();
yield new EdgeDriver(); }
default -> throw new IllegalArgumentException("Unsupported: " + browser);
};
}
Selenium 4.6+ — Driver Manager Built In
Selenium 4.6+ includes auto-driver management without WebDriverManager dependency:
Java
// No setup() call needed in Selenium 4.6+
WebDriver driver = new ChromeDriver(); // auto-manages driver
Why WebDriverManager is Better
| Aspect | Manual Setup | WebDriverManager |
|---|---|---|
| Version matching | Manual — breaks on Chrome update | Automatic |
| CI/CD setup | Driver file must be in repo or CI agent | Zero config |
| Multiple browsers | Multiple manual downloads | One line each |
| Corporate proxy | Manual env config | .proxy() option |
| Maintenance | Constant updating | Fully automated |
