</>

Technology

Selenium

Difficulty

Beginner

Interview Question

How do you use WebDriverManager in Selenium and why is it better than manual driver setup?

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

AspectManual SetupWebDriverManager
Version matchingManual — breaks on Chrome updateAutomatic
CI/CD setupDriver file must be in repo or CI agentZero config
Multiple browsersMultiple manual downloadsOne line each
Corporate proxyManual env config.proxy() option
MaintenanceConstant updatingFully automated

Follow AutomateQA

Related Topics