package org.vaadin.addons.javaee.selenium.po;
import static org.junit.Assert.assertTrue;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
public abstract class BaseSideMenuPO extends BasePO {
public static final String SECOND_LEVEL_TEMPLATE = "//div[@id='SideMenu']/div/div[{first}]/div[2]/div[{second}]/div[1]";
public static final String THIRD_LEVEL_TEMPLATE = "//div[@id='SideMenu']/div/div[{first}]/div[2]/div[{second}]/div[2]/div[{third}]/div[1]";
public static final String ELEMENT_POST_FIX = "/div/span";
protected BaseSideMenuPO() {
}
public BaseSideMenuPO(WebDriver driver) {
super(driver);
}
public void navigateTo(Integer firstLevelPos, Integer secondLevelPos) {
navigateTo(firstLevelPos, secondLevelPos, null);
}
public void navigateTo(Integer firstLevelPos, Integer secondLevelPos, Integer thirdLevelPos) {
String xpath = buildXPath(firstLevelPos, secondLevelPos, thirdLevelPos) + ELEMENT_POST_FIX;
WebElement element = driver.findElement(By.xpath(xpath));
element.click();
}
public void assertMenuSelected(Integer firstLevelPos, Integer secondLevelPos, Integer thirdLevelPos) {
String xpath = buildXPath(firstLevelPos, secondLevelPos, thirdLevelPos);
WebElement element = driver.findElement(By.xpath(xpath));
assertTrue("Entry " + firstLevelPos + "-" + secondLevelPos + "-" + thirdLevelPos + " must be selected",
element.getAttribute("class").contains("v-tree-node-selected"));
}
String buildXPath(Integer firstLevelPos, Integer secondLevelPos, Integer thirdLevelPos) {
String xpath = SECOND_LEVEL_TEMPLATE;
if (thirdLevelPos != null) {
xpath = THIRD_LEVEL_TEMPLATE.replace("{third}", thirdLevelPos.toString());
}
xpath = xpath.replace("{first}", firstLevelPos.toString());
xpath = xpath.replace("{second}", secondLevelPos.toString());
return xpath;
}
@Override
protected String getIdentifyingElement() {
return "SideMenu";
}
}