</>

Technology

Selenium

Difficulty

Beginner

Interview Question

What does the statement WebDriver driver = new FirefoxDriver() mean?

WebDriver is an interface. driver is a reference variable of WebDriver type. new FirefoxDriver() creates the actual FirefoxDriver object — this enables polymorphism for cross-browser switching.

Answer

Understanding WebDriver driver = new FirefoxDriver()

This statement uses interface reference and object polymorphism — a core Java OOP concept.

Breaking it down:

CODE
WebDriver   driver   =   new FirefoxDriver();
↑           ↑               ↑
Interface   Reference var   Actual object created
(type)      (name)          (implementation)

WebDriver is an interface:

Java
public interface WebDriver {
    void get(String url);
    String getTitle();
    String getCurrentUrl();
    WebElement findElement(By by);
    List<WebElement> findElements(By by);
    // ... many more abstract methods
}

FirefoxDriver implements WebDriver:

Java
public class FirefoxDriver implements WebDriver {
    // Implements all abstract methods from WebDriver interface
    @Override
    public void get(String url) { /* Firefox-specific implementation */ }
    @Override
    public String getTitle() { /* Firefox-specific implementation */ }
    // ...
}

Why use WebDriver type instead of FirefoxDriver type?

Java
// Option 1 - WebDriver type (PREFERRED)
WebDriver driver = new FirefoxDriver();
// Can reassign to any browser implementation:
driver = new ChromeDriver();   // Works!
driver = new SafariDriver();   // Works!

// Option 2 - FirefoxDriver type (LIMITING)
FirefoxDriver driver = new FirefoxDriver();
// Cannot reassign to other browsers easily

Cross-browser switching with WebDriver type:

Java
WebDriver driver;

String browser = System.getProperty("browser", "chrome");

if (browser.equals("firefox")) {
    driver = new FirefoxDriver();
} else if (browser.equals("ie")) {
    driver = new InternetExplorerDriver();
} else {
    driver = new ChromeDriver();
}

// driver.get() works identically regardless of browser
driver.get("https://example.com");

Key concept: WebDriver is an interface containing several abstract methods such as get(), findElement() etc. We create a reference to the WebDriver interface, and we can assign objects (FirefoxDriver, ChromeDriver, IEDriver, AndroidDriver) to it — enabling polymorphism for cross-browser testing.

Follow AutomateQA

Related Topics