Selenium-Archtitecture-web - Notes By ShariqSP
Selenium Architecture - WEB

Selenium Components
Search Context
Type: Interface
Description: Search Context defines the context within which Selenium searches for web elements, such as windows, frames, or iframes. It provides methods for locating elements within the context.
Relationship: WebDriver implements Search Context. This allows WebDriver to locate and interact with web elements within different contexts.
JavaScript Executor
Type: Interface
Description: JavaScript Executor allows executing JavaScript code within the context of the currently selected frame or window. It enables interaction with web elements that may not be directly accessible through Selenium's WebDriver API.
Relationship: WebDriver extends JavaScript Executor. This enables WebDriver to execute JavaScript code in the browser context.
WebDriver
Type: Interface
Description: WebDriver is the core interface of Selenium that provides a programming interface for automating interactions with web browsers. It defines methods for controlling the browser, navigating to different pages, interacting with web elements, and performing various actions on web pages.
Relationship: Various browser drivers (e.g., Firefox Driver, Chrome Driver) implement the WebDriver interface. This allows the browser drivers to provide browser-specific implementations of WebDriver methods.
Take Screenshot
Type: Interface
Description: Take Screenshot is an interface in Selenium that defines methods for capturing the current state of the web browser's viewport and saving it as an image file. It is useful for debugging, error reporting, and generating visual test reports.
Relationship: WebDriver implements Take Screenshot. This allows WebDriver to capture screenshots of the browser viewport.
RemoteWebDriver
Type: Class
Description: RemoteWebDriver is a class in Selenium that implements the WebDriver interface and enables running Selenium tests on remote machines or grids. It allows distributed testing across multiple environments and platforms.
Relationship: RemoteWebDriver extends the AbstractWebDriver class, which in turn implements the WebDriver interface. RemoteWebDriver can also interact with various browser drivers to control remote browsers.
Firefox Driver
Type: Class
Description: Firefox Driver is a class in Selenium that implements the WebDriver interface and provides browser-specific automation capabilities for the Mozilla Firefox browser. It allows controlling Firefox browser instances programmatically.
Relationship: Firefox Driver extends the RemoteWebDriver class, inheriting its capabilities for remote execution. It also interacts with the GeckoDriver (a separate executable) to communicate with the Firefox browser.
Chrome Driver
Type: Class
Description: Chrome Driver is a class in Selenium that implements the WebDriver interface and provides browser-specific automation capabilities for the Google Chrome browser. It enables controlling Chrome browser instances programmatically.
Relationship: Chrome Driver extends the RemoteWebDriver class, allowing remote execution capabilities. It also interacts with the ChromeDriver server (a separate executable) to communicate with the Chrome browser.
Safari Driver
Type: Class
Description: Safari Driver is a class in Selenium that implements the WebDriver interface and provides browser-specific automation capabilities for the Safari browser on macOS. It allows controlling Safari browser instances programmatically.
Relationship: Safari Driver extends the RemoteWebDriver class, inheriting remote execution capabilities. It interacts with the SafariDriver (a component of Safari) to communicate with the Safari browser.
Edge Driver
Type: Class
Description: Edge Driver is a class in Selenium that implements the WebDriver interface and provides browser-specific automation capabilities for the Microsoft Edge browser. It enables controlling Edge browser instances programmatically.
Relationship: Edge Driver extends the RemoteWebDriver class, allowing remote execution capabilities. It interacts with the EdgeDriver server (a separate executable) to communicate with the Edge browser.
Opera Driver
Type: Class
Description: Opera Driver is a class in Selenium that implements the WebDriver interface and provides browser-specific automation capabilities for the Opera browser. It allows controlling Opera browser instances programmatically.
Relationship: Opera Driver extends the RemoteWebDriver class, inheriting remote execution capabilities. It interacts with the OperaDriver server (a separate executable) to communicate with the Opera browser.