In the line WebDriver driver = new FirefoxDriver();:
Breaking it down:
Java
WebDriver driver = new FirefoxDriver();
↑ ↑ ↑
Interface Reference Object creation
type variable (concrete class)
- ✓
WebDriver— is an interface (defined inorg.openqa.selenium.WebDriver). It declares all browser automation methods likeget(),findElement(),quit(), etc. - ✓
driver— is a reference variable of typeWebDriver - ✓
new FirefoxDriver()— creates an object ofFirefoxDriverclass, which implements theWebDriverinterface
Class hierarchy:
CODE
WebDriver (interface)
↑
RemoteWebDriver (class implements WebDriver)
↑
FirefoxDriver (class extends RemoteWebDriver)
ChromeDriver
EdgeDriver
Why this works — polymorphism:
Since FirefoxDriver implements WebDriver, a FirefoxDriver object can be assigned to a WebDriver reference. This is standard Java polymorphism.
Practical meaning:
When new FirefoxDriver() is called, Selenium launches the Firefox browser and returns a driver object through which all browser interactions happen.
