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
