</>

Technology

Selenium

Difficulty

Beginner

Interview Question

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

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