package com.ttdev.wicketpagetest; import org.openqa.selenium.NoSuchElementException; import org.openqa.selenium.StaleElementReferenceException; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.interactions.Actions; import org.openqa.selenium.support.ui.ExpectedCondition; import org.openqa.selenium.support.ui.WebDriverWait; public class WicketSeleniumDriver extends WicketSelenium { public WicketSeleniumDriver(Configuration cfg, WebDriver selenium) { super(cfg, selenium); } public void click(String wicketPath) { findWicketElement(wicketPath).click(); } public void clear(String wicketPath) { findWicketElement(wicketPath).clear(); } public void sendKeys(String wicketPath, CharSequence... keysToSend) { findWicketElement(wicketPath).sendKeys(keysToSend); } public String getText(String wicketPath) { return findWicketElement(wicketPath).getText(); } public String getValue(String wicketPath) { return getAttribute(wicketPath, "value"); } public String getAttribute(String wicketPath, String attrName) { return findWicketElement(wicketPath).getAttribute(attrName); } public void wait(ExpectedCondition<?> condition) { try { new WebDriverWait(getSelenium(), WAIT_TIMEOUT_IN_SECONDS) .until(condition); } catch (StaleElementReferenceException e) { // NOTE: wait for the latest page for StaleElementReferenceException wait(condition); } } public void waitUntilElementVisible(final String wicketPath) { wait(new ExpectedCondition<Boolean>() { @Override public Boolean apply(WebDriver driver) { return isElementVisible(wicketPath); } }); } public void waitUntilAttributeChanged(final String wicketPath, final String attrName, final String changeTo) { wait(new ExpectedCondition<Boolean>() { @Override public Boolean apply(WebDriver driver) { return getAttribute(wicketPath, attrName).equals(changeTo); } }); } public void waitUntilTextChanged(final String wicketPath, final String changeTo) { wait(new ExpectedCondition<Boolean>() { @Override public Boolean apply(WebDriver driver) { return getText(wicketPath).equals(changeTo); } }); } public boolean isElementPresent(String wicketPath) { try { findWicketElement(wicketPath); return true; } catch (NoSuchElementException e) { return false; } } public boolean isElementVisible(String wicketPath) { return findWicketElement(wicketPath).isDisplayed(); } public void mouseMoveOver(String wicketPath) { WebElement targetElement = findWicketElement(wicketPath); Actions builder = new Actions(getSelenium()); builder.moveToElement(targetElement).build().perform(); } }