Super Interface of WebDriver
SearchContext is the parent (super) interface of WebDriver in the Selenium interface hierarchy.
Selenium interface hierarchy:
SearchContext ← Super interface
└── WebDriver ← Extends SearchContext
├── ChromeDriver
├── FirefoxDriver
├── EdgeDriver
├── RemoteWebDriver
└── ...
SearchContext declares:
public interface SearchContext {
// Find a single element
WebElement findElement(By by);
// Find multiple elements
List<WebElement> findElements(By by);
}
WebDriver extends SearchContext:
public interface WebDriver extends SearchContext {
void get(String url);
String getTitle();
String getCurrentUrl();
String getPageSource();
void close();
void quit();
Set<String> getWindowHandles();
String getWindowHandle();
Options manage();
Navigation navigate();
TargetLocator switchTo();
// ... plus findElement() and findElements() inherited from SearchContext
}
Why SearchContext?
SearchContext is also implemented by WebElement — this allows element-scoped searches:
// Searching from the document root (WebDriver implements SearchContext)
driver.findElement(By.id("container"));
// Searching within a specific element (WebElement also implements SearchContext)
WebElement container = driver.findElement(By.id("container"));
WebElement button = container.findElement(By.tagName("button")); // Scoped search!
Full hierarchy:
SearchContext
├── WebDriver (browser-level search)
│ ├── ChromeDriver
│ ├── FirefoxDriver
│ └── RemoteWebDriver
└── WebElement (element-level search)
├── RemoteWebElement
└── ...
Key answer: The super interface of WebDriver is SearchContext. It defines findElement() and findElements() methods that are inherited by both WebDriver (for page-level searches) and WebElement (for element-scoped searches).
