package com.algocrafts.chapter2.factory; import com.algocrafts.selenium.*; import org.openqa.selenium.*; import org.openqa.selenium.interactions.HasInputDevices; import java.util.List; import java.util.Set; public interface Browser<T extends WebDriver> extends WebDriver, CachedWebDriverSupplier<T>, SearchScope<Browser<T>>, HasInputDevices, JavascriptExecutor, HasCapabilities { CachedWebDriverSupplier<T> getSupplier(); @Override default public T init() { return getSupplier().init(); } @Deprecated @Override default public Element findElement(By by) { return new ElementFinder(by).locate(get()); } @Deprecated @Override default public List<WebElement> findElements(By by) { return new ElementsFinder(by).locate(get()); } @Override default public void get(String url) { get().get(url); } @Override default public String getCurrentUrl() { return get().getCurrentUrl(); } @Override default public String getTitle() { return get().getTitle(); } @Override default public String getPageSource() { return get().getPageSource(); } @Override default public Set<String> getWindowHandles() { return get().getWindowHandles(); } @Override default public String getWindowHandle() { return get().getWindowHandle(); } @Override default public TargetLocator switchTo() { return get().switchTo(); } @Override default public Navigation navigate() { return get().navigate(); } @Override default public Options manage() { return get().manage(); } @Override default public void close() { get().close(); } @Override default public void quit() { store.valueOf(this).quit(); store.remove(this); } }