package example.domain.web.webdriver; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.support.PageFactory; import org.openqa.selenium.support.ui.ExpectedCondition; import org.openqa.selenium.support.ui.WebDriverWait; import java.util.List; public class Browser { private WebDriver driver; private int serverPort; public Browser(int serverPort) { this.driver = new FirefoxDriver(); this.serverPort = serverPort; } public void get(String url) { driver.get("http://localhost:" + serverPort + url); } public String getCurrentUrl() { return driver.getCurrentUrl(); } public WebElement findElement(By selector) { return driver.findElement(selector); } public List<WebElement> findElements(By selector) { return driver.findElements(selector); } public WebElement waitForElement(final By selector) { WebDriverWait wait = new WebDriverWait(driver, 5000); return wait.until(new ExpectedCondition<WebElement>() { public WebElement apply(WebDriver webDriver) { return driver.findElement(selector); } }); } public String getBodyClass() { return waitForElement(By.tagName("body")).getAttribute("class"); } public <T extends Page> T shows(Class<T> pageClass) { T page = PageFactory.initElements(driver, pageClass); page.verify(this); return page; } public void stop() { try { driver.quit(); } catch (Exception e) { e.printStackTrace(); } } }