package de.asideas.crowdsource.testsupport.selenium; import cucumber.api.Scenario; import org.openqa.selenium.OutputType; import org.openqa.selenium.TakesScreenshot; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebDriverException; import org.openqa.selenium.remote.RemoteWebDriver; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class WebDriverUtils { private static final Logger LOG = LoggerFactory.getLogger(WebDriverUtils.class); public static void makeScreenshot(WebDriver driver, Scenario scenario) { LOG.debug("Capturing screenshot for scenario {}", scenario.getName()); if (driver instanceof TakesScreenshot) { TakesScreenshot screenshotableDriver = (TakesScreenshot) driver; try { byte[] screenshot = screenshotableDriver.getScreenshotAs(OutputType.BYTES); scenario.embed(screenshot, "image/png"); } catch (WebDriverException somePlatformsDontSupportScreenshots) { LOG.error(somePlatformsDontSupportScreenshots.getMessage()); } } else { LOG.warn("This web driver implementation {} cannot create screenshots", driver.getClass().getName()); } } public static int getPageYOffset(WebDriver webDriver) { Object pageYOffset = ((RemoteWebDriver) webDriver).executeScript("return window.pageYOffset;"); return ((Long) pageYOffset).intValue(); } }