package org.expressolivre.cte.pages.email; import org.expressolivre.cte.pages.common.Page; import org.openqa.selenium.Alert; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.support.FindBy; /** * Pagina de administracao das pastas do Expresso. * * @author L.F.Estivalet (Serpro) * * Created on Jun 16, 2011 at 4:01:32 PM * */ public class MailFolderPage extends Page { @FindBy(xpath = "//input[@value='Nova Pasta']") private WebElement createNewFolder; @FindBy(xpath = "//input[@value='Excluir pasta']") private WebElement deleteFolder; @FindBy(xpath = "//input[@value='Renomear pasta']") private WebElement renameFolder; public MailFolderPage(WebDriver driver) { super(driver); // TODO Auto-generated constructor stub } /** * Cria nova pasta. * * @param folderName * Nome da pasta a ser criada. */ public void createNewFolder(String folderName) { this.createFolder(folderName); } private void createFolder(String folderName) { this.createNewFolder.click(); Alert newFolder = driver.switchTo().alert(); assert "Insira o nome da nova pasta: ".equals(newFolder.getText()); newFolder.sendKeys(folderName); newFolder.accept(); } /** * Cria sub pasta. * * @param rootFolderName * Pasta pai. * @param subFolderName * Nome da sub pasta a ser criada. */ public void createSubFolder(String rootFolderName, String subFolderName) { this.driver.findElement( By.id("lINBOX/" + rootFolderName + "folders_tree")).click(); this.createFolder(subFolderName); } /** * Renomeia pasta. * * @param folderName * Nome da pasta a ser renomeada. * @param newName * Novo nome da pasta. */ public void renameFolder(String folderName, String newName) { super.waitForElement(By.id("lINBOX/" + folderName + "folders_tree")); this.driver.findElement(By.id("lINBOX/" + folderName + "folders_tree")) .click(); this.renameFolder.click(); Alert newFolder = driver.switchTo().alert(); assert "Entre com um nome para a pasta:".equals(newFolder.getText()); newFolder.sendKeys(newName); newFolder.accept(); } /** * @param folderName */ public void renameFolderInUse(String folderName) { this.driver.findElement(By.id("lINBOX/" + folderName + "folders_tree")) .click(); this.renameFolder.click(); Alert newFolder = driver.switchTo().alert(); assert "Não é possível renomear esta pasta, pois está em uso no momento!" .equals(newFolder.getText()); newFolder.accept(); } /** * Exclui pasta. * * @param folderName * Nome da pasta a ser excluida. */ public void deleteFolder(String folderName) { this.driver.findElement(By.id("lINBOX/" + folderName + "folders_tree")) .click(); this.deleteFolder.click(); } /** * Exclui pasta. * * @param folderName * Nome da pasta a ser excluida. */ public void deleteFolder(String folderName, boolean inUse) { this.driver.findElement(By.id("lINBOX/" + folderName + "folders_tree")) .click(); this.deleteFolder.click(); Alert confirm = driver.switchTo().alert(); if (!inUse) { assert ("Você gostaria de excluir a pasta: " + folderName + "?") .equals(confirm.getText()); } else { assert ("Não é possível remover esta pasta, pois está em uso no momento!") .equals(confirm.getText()); } confirm.accept(); } /** * Exclui pasta. * * @param folderName * Nome da pasta a ser excluida. */ public void deleteSubFolder(String rootFolderName, String subFolderName) { this.driver.findElement( By.id("pINBOX/" + rootFolderName + "folders_tree")).click(); this.driver.findElement( By.id("lINBOX/" + rootFolderName + "/" + subFolderName + "folders_tree")).click(); this.deleteFolder.click(); Alert confirm = driver.switchTo().alert(); assert ("Você gostaria de excluir a pasta: " + subFolderName + "?") .equals(confirm.getText()); confirm.accept(); } }