default boolean hasWebDriverStarted() { return getWebDriver() != null; }
public WebDriver getWebDriver() { return driver.getWebDriver(); }
private <T> T ifWebDriverStarted(Driver driver, Function<WebDriver, T> lambda) { if (!driver.hasWebDriverStarted()) { log.warning("Cannot take screenshot because browser is not started"); return null; } return lambda.apply(driver.getWebDriver()); }
@Override public List<WebElement> getElements() { SearchContext searchContext = parent == null ? driver.getWebDriver() : parent; return WebElementSelector.instance.findElements(driver, searchContext, selector); }
@SuppressWarnings("unchecked") default <T> T executeJavaScript(String jsCode, Object... arguments) { return (T) ((JavascriptExecutor) getWebDriver()).executeScript(jsCode, arguments); }
default Actions actions() { return new Actions(getWebDriver()); } }
default boolean supportsJavascript() { return hasWebDriverStarted() && getWebDriver() instanceof JavascriptExecutor; }
private SearchContext getSearchContext() { return parent == null ? driver().getWebDriver() : (parent instanceof SelenideElement) ? ((SelenideElement) parent).toWebElement() : parent; }
public void refresh(Driver driver) { driver.getWebDriver().navigate().refresh(); } }
default SelenideTargetLocator switchTo() { return new SelenideTargetLocator(config(), getWebDriver()); }
public <PageObjectClass, T extends PageObjectClass> PageObjectClass page(Driver driver, T pageObject) { initElements(new SelenideFieldDecorator(this, driver, driver.getWebDriver()), pageObject); return pageObject; }
public void back(Driver driver) { driver.getWebDriver().navigate().back(); }
public void forward(Driver driver) { driver.getWebDriver().navigate().forward(); }
protected HttpContext createHttpContext(Driver driver) { HttpContext localContext = new BasicHttpContext(); if (driver.hasWebDriverStarted()) { localContext.setAttribute(COOKIE_STORE, new WebdriverCookieStore(driver.getWebDriver())); } return localContext; }
private List<LogEntry> getLogEntries(String logType, Level logLevel) { try { return driver.getWebDriver().manage().logs().get(logType).filter(logLevel); } catch (UnsupportedOperationException ignore) { return emptyList(); } }
public void clearCookies() { if (driver().hasWebDriverStarted()) { driver().getWebDriver().manage().deleteAllCookies(); } }
@Override public SelenideElement execute(SelenideElement proxy, WebElementSource locator, Object[] args) { WebElement element = locator.getWebElement(); new Actions(locator.driver().getWebDriver()).moveToElement(element).perform(); return proxy; } }
SelenideTargetLocator switchTo = new SelenideTargetLocator(driver.config(), driver.getWebDriver()); switchTo.frame(iframe); int iframeWidth = ((Long) ((JavascriptExecutor) webdriver).executeScript("return document.body.clientWidth")).intValue();
@Override public SelenideElement execute(SelenideElement proxy, WebElementSource locator, Object[] args) { SelenideElement target; if (args[0] instanceof String) { target = ElementFinder.wrap(locator.driver(), By.cssSelector((String) args[0])); } else if (args[0] instanceof WebElement) { target = WebElementWrapper.wrap(locator.driver(), (WebElement) args[0]); } else { throw new IllegalArgumentException("Unknown target type: " + args[0] + " (only String or WebElement are supported)"); } target.shouldBe(visible); new Actions(locator.driver().getWebDriver()).dragAndDrop(locator.getWebElement(), target).perform(); return proxy; } }
private File clickAndInterceptFileByProxyServer(WebElementSource anyClickableElement, WebElement clickable, SelenideProxyServer proxyServer, long timeout) throws FileNotFoundException { Config config = anyClickableElement.driver().config(); WebDriver webDriver = anyClickableElement.driver().getWebDriver(); String currentWindowHandle = webDriver.getWindowHandle(); Set<String> currentWindows = webDriver.getWindowHandles(); FileDownloadFilter filter = proxyServer.responseFilter("download"); filter.activate(); try { clickable.click(); waiter.wait(filter, new HasDownloads(), timeout, config.pollingInterval()); return firstDownloadedFile(anyClickableElement, filter, timeout); } finally { filter.deactivate(); closeNewWindows(webDriver, currentWindowHandle, currentWindows); } }