package com.redheap.selenium.junit;
import java.util.Locale;
import java.util.logging.Level;
import java.util.logging.Logger;
import oracle.adf.view.rich.automation.selenium.DialogManager;
import org.junit.rules.ExternalResource;
import org.openqa.selenium.Capabilities;
import org.openqa.selenium.Dimension;
import org.openqa.selenium.remote.RemoteWebDriver;
public abstract class WebDriverResource extends ExternalResource {
private RemoteWebDriver driver;
private final int width;
private final int height;
private final Locale locale;
private static final Logger logger = Logger.getLogger(WebDriverResource.class.getName());
public WebDriverResource() {
this(1920, 1200, Locale.US);
}
public WebDriverResource(int width, int height, Locale locale) {
this.width = width;
this.height = height;
this.locale = locale;
}
@Override
protected void before() throws Throwable {
logger.fine("starting browser...");
driver = createDriver(locale.toLanguageTag());
if (logger.isLoggable(Level.FINE)) {
Capabilities capabilities = driver.getCapabilities();
logger.fine("running " + capabilities.getBrowserName() + " version " + capabilities.getVersion() + " on " +
capabilities.getPlatform());
}
DialogManager.init(driver, 10000); // timeout of 10 seconds
driver.manage().window().setSize(new Dimension(width, height));
}
protected abstract RemoteWebDriver createDriver(String language);
@Override
protected void after() {
logger.fine("quit browser...");
driver.quit();
}
public RemoteWebDriver getDriver() {
return driver;
}
public DialogManager getDialogManager() {
return DialogManager.getInstance();
}
}