package com.algocrafts.selenium; import org.openqa.selenium.*; import org.openqa.selenium.interactions.HasInputDevices; import org.openqa.selenium.interactions.Keyboard; import org.openqa.selenium.interactions.Mouse; import java.util.List; import java.util.Set; public interface Browser<T extends WebDriver> extends Actionable<T>, SearchScope<Browser<T>>, WebDriver, HasInputDevices, JavascriptExecutor, HasCapabilities { CachedWebDriverSupplier<T> getSupplier(); @Override default void onTimeout() { if (logger.isDebugEnabled()) { save(this.getTitle()); } } @Override default T init() { return getSupplier().init(); } @Deprecated @Override default Element findElement(By by) { return new ElementFinder(by).locate(get()); } @Deprecated @Override default List<WebElement> findElements(By by) { return new ElementsFinder(by).locate(get()); } @Override default void get(String url) { get().get(url); } @Override default String getCurrentUrl() { return get().getCurrentUrl(); } @Override default String getTitle() { return get().getTitle(); } @Override default String getPageSource() { return get().getPageSource(); } @Override default Set<String> getWindowHandles() { return get().getWindowHandles(); } @Override default String getWindowHandle() { return get().getWindowHandle(); } @Override default TargetLocator switchTo() { return get().switchTo(); } @Override default Navigation navigate() { return get().navigate(); } @Override default Options manage() { return get().manage(); } @Override default void close() { get().close(); } @Override default void quit() { store.valueOf(this).quit(); store.remove(this); } @Override default Keyboard getKeyboard() { HasInputDevices t = (HasInputDevices) get(); return t.getKeyboard(); } @Override default Mouse getMouse() { HasInputDevices t = (HasInputDevices) get(); return t.getMouse(); } @Override default Capabilities getCapabilities() { HasCapabilities hasCapabilities = (HasCapabilities) get(); return hasCapabilities.getCapabilities(); } @Override default Object executeScript(String script, Object... args) { JavascriptExecutor javascriptExecutor = (JavascriptExecutor) get(); return javascriptExecutor.executeScript(script, args); } @Override default Object executeAsyncScript(String script, Object... args) { JavascriptExecutor javascriptExecutor = (JavascriptExecutor) get(); return javascriptExecutor.executeAsyncScript(script, args); } }