</>

Technology

Selenium

Difficulty

Beginner

Interview Question

What is the purpose of using WebDriver type for driver variable instead of FirefoxDriver directly?

Using the WebDriver interface type allows the same variable to work with any browser driver, enabling easy cross-browser switching.

Answer

By creating a reference variable of type WebDriver instead of FirefoxDriver, we can use the SAME variable to work with multiple browsers like ChromeDriver, FirefoxDriver, EdgeDriver, etc.

Without WebDriver interface (bad approach):

Java
FirefoxDriver driver = new FirefoxDriver();
// driver can ONLY hold a FirefoxDriver — no flexibility

With WebDriver interface (good approach):

Java
WebDriver driver = new FirefoxDriver();    // Firefox
WebDriver driver = new ChromeDriver();    // Chrome — same variable type!
WebDriver driver = new EdgeDriver();      // Edge — same variable type!

Practical cross-browser factory:

Java
public WebDriver getDriver(String browser) {
    WebDriver driver;
    switch (browser.toLowerCase()) {
        case "firefox": driver = new FirefoxDriver(); break;
        case "chrome":  driver = new ChromeDriver();  break;
        case "edge":    driver = new EdgeDriver();    break;
        default: throw new IllegalArgumentException("Unknown browser: " + browser);
    }
    return driver;
}

// Usage — same WebDriver reference works for all browsers
WebDriver driver = getDriver(System.getProperty("browser", "chrome"));
driver.get("https://automateqa.online");

Java OOP concept applied: This is programming to an interface — a Java best practice. It enables:

  • Polymorphism — one type, many implementations
  • Flexibility — switch browsers by changing one line
  • Extensibility — new browsers can be added without changing caller code

Follow AutomateQA

Related Topics