package org.expressolivre.cte.pages.email; import org.apache.commons.lang.StringUtils; import org.expressolivre.cte.pages.common.Page; import org.openqa.selenium.Alert; import org.openqa.selenium.By; import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.RenderedWebElement; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.PageFactory; import org.testng.Assert; /** * @author L.F.Estivalet (Serpro) * * Created on Dec 16, 2010 at 9:43:21 AM * */ public class MailPage extends Page { /** Botao para criar novo email. */ @FindBy(xpath = "//table[@id='folders_tbl']/tbody/tr[1]/td/table/tbody/tr[2]/td/div/span") private WebElement newEmail; /** Campo "Para:". */ @FindBy(id = "to_1") private WebElement to; /** Campo "Assunto:". */ @FindBy(id = "subject_1") private WebElement subject; /** Botao para enviar email. */ @FindBy(id = "send_button_1") private WebElement send; /** Flag de importante no momento de compor um email. */ @FindBy(id = "important_message_1") private WebElement important; /** Flag de importante de um email aberto. */ @FindBy(xpath = "//div[@id='exmail_main_body']/div[2]/table/tbody/tr[1]/td/table/tbody/tr[1]/td[2]/span[3]") private WebElement importantFlag; /** Filtra emails importantes. */ @FindBy(id = "span_flag_FLAGGED") private WebElement importantFilter; /** Filtra emails lidos. */ @FindBy(id = "span_flag_SEEN") private WebElement readFilter; @FindBy(id = "span_flag_UNSEEN") private WebElement notReadFilter; @FindBy(id = "span_flag_ANSWERED") private WebElement answeredFilter; /** Flag normal de um email aberto. */ @FindBy(xpath = "//div[@id='exmail_main_body']/div[2]/table/tbody/tr[1]/td/table/tbody/tr[1]/td[2]/span[3]") private WebElement normalFlag; /** Flag nao lido de um email aberto. */ @FindBy(xpath = "//div[@id='exmail_main_body']/div[2]/table/tbody/tr[1]/td/table/tbody/tr[1]/td[2]/span[2]") private WebElement notReadFlag; /** Checkbox de confirmacao de leitura. */ @FindBy(id = "return_receipt_1") private WebElement returnReceipt; /** Link para acionar exibicao do campo copia oculta Cco. */ @FindBy(id = "a_cco_link_1") private WebElement blindCarbonCopyLink; /** Campo copia oculta "Cco:". */ @FindBy(id = "cco_1") private WebElement blindCarbonCopy; /** Link para acionar exibicao do campo copia Cc. */ @FindBy(id = "a_cc_link_1") private WebElement carbonCopyLink; /** Campo copia "Cc:". */ @FindBy(id = "cc_1") private WebElement carbonCopy; /** Link para salvar email. */ @FindBy(id = "save_message_options_1") private WebElement saveEmail; /** Link para adicionar anexos ao email. */ @FindBy(linkText = "Anexos: adicionar+") private WebElement attachmentLink; /** Link para adicionar 1o anexo. */ @FindBy(id = "inputFile_1_1") private WebElement attachment; /** Link para adicionar 2o anexo. */ @FindBy(id = "inputFile_1_2") private WebElement attachment2; /** Link para remover anexo. */ @FindBy(id = "linkFile_1_1") private WebElement removeAttachmentLink; /** Link para apagar email quando este estiver aberto. */ @FindBy(xpath = "//div[@id='footer_menu']/table[@id='footer_box']/tbody/tr[@id='table_message']/td[@id='span_options']/span[1]/span") private WebElement deleteEmailLink; @FindBy(xpath = "//div[@id='footer_menu']/table[@id='footer_box']/tbody/tr[@id='table_message']/td[@id='span_options']/span[4]/span") private WebElement exportEmailLink; /** Link para pasta lixeira. */ @FindBy(id = "lINBOX/Trashtree_folders") private WebElement trashFolder; /** Link para limpar lixeira. */ @FindBy(id = "empty_trash") private WebElement emptyTrashLink; /** Campo contendo total de emails de uma pasta. */ @FindBy(id = "tot_m") private WebElement totalEmails; /** Checkbox para selecao de todos emails de uma pasta. */ @FindBy(id = "chk_box_select_all_messages") private WebElement selectAllEmails; /** Link para acionar o menu Ferramentas. */ @FindBy(xpath = "//td[@id='link_tools']/div/span") private WebElement toolsMenu; @FindBy(xpath = "//div[@id='menu_tools']/table/tbody/tr[4]/td") private WebElement editFolder; @FindBy(xpath = "//div[@id='menu_tools']/table/tbody/tr[3]/td") private WebElement editFilter; @FindBy(xpath = "//span[@onclick='wfolders.makeWindow(\"\",\"move_to\")']") /** Opcao de mover do rodape. */ private WebElement moveEmailLink; @FindBy(id = "dJSWin_wfolders_bok") private WebElement moveEmailButton; /** Link para encaminhar em email aberto. */ @FindBy(xpath = "//div[@id='exmail_main_body']/div[2]/table/tbody/tr[1]/td/table/tbody/tr[1]/td[3]/span[3]") private WebElement forwardEmail; /** Link para responder em email aberto. */ @FindBy(xpath = "//div[@id='exmail_main_body']/div[2]/table/tbody/tr[1]/td/table/tbody/tr[1]/td[3]/span[5]") private WebElement replyEmail; /** Link para responder a todos em email aberto. */ @FindBy(xpath = "//div[@id='exmail_main_body']/div[2]/table/tbody/tr[1]/td/table/tbody/tr[2]/td/div/span[1]") private WebElement replyAllEmail; /** Link para responder sem historico em email aberto. */ @FindBy(xpath = "//div[@id='exmail_main_body']/div[2]/table/tbody/tr[1]/td/table/tbody/tr[2]/td/div/span[2]") private WebElement replyEmailWithoutHistory; /** Link para responder a todos sem historico em email aberto. */ @FindBy(xpath = "//div[@id='exmail_main_body']/div[2]/table/tbody/tr[1]/td/table/tbody/tr[2]/td/div/span[3]") private WebElement replyAllEmailWithoutHistory; /** Link para editar email na pasta de rascunhos. */ @FindBy(xpath = "//div[@id='exmail_main_body']/div[2]/table/tbody/tr[1]/td/table/tbody/tr/td[2]/span[2]/span[1]") private WebElement editEmail; @FindBy(xpath = "//div[@id='lertContainer']/div[@id='lertWindow']/div[@id='lertButtons']/a[1]") private WebElement cancelNewEmail; @FindBy(xpath = "//div[@id='lertContainer']/div[@id='lertWindow']/div[@id='lertButtons']/a[2]") private WebElement discardNewEmail; /** * Esse botao eh no alerta ao fechar uma mensagem nao salva e nao o botao * salvar para rascunhos. */ @FindBy(xpath = "//div[@id='lertContainer']/div[@id='lertWindow']/div[@id='lertButtons']/a[3]") private WebElement saveNewEmail; @FindBy(xpath = "//table[@id='folders_tbl']/tbody/tr[1]/td/table/tbody/tr[1]/td/a[1]") private WebElement searchMessages; @FindBy(id = "em_message_search") private WebElement searchBox; @FindBy(xpath = "//table[@id='folders_tbl']/tbody/tr[1]/td/table/tbody/tr[1]/td/a[1]") private WebElement searchStart; /** Nome da pasta "Caixa de Entrada". */ public static final String INBOX_FOLDER = "lINBOXtree_folders"; /** Nome da pasta "Enviados". */ public static final String SENT_FOLDER = "lINBOX/Senttree_folders"; /** * @param driver */ public MailPage(WebDriver driver) { super(driver); } /** * Cria um novo email. */ public void createNewEmail() { this.newEmail.click(); waitForElement(By.id("to_1")); } /** * Cancela criacao de novo email. */ public void cancelNewEmail() { this.cancelNewEmail.click(); } public MailSearchPage openSearchMessageWindow() { this.searchMessages.click(); super.waitForElement(By.id("flagged")); return PageFactory.initElements(driver, MailSearchPage.class); } public void setSearchBox(String text) { this.searchBox.sendKeys(text); } public void searchStart() { this.searchStart.click(); } /** * Descarta criacao de novo email. */ public void discardNewEmail() { this.discardNewEmail.click(); } /** * Salva email na pasta rascunhos. */ public void saveNewEmail() { this.saveNewEmail.click(); } /** * Preenche campo assunto. * * @param subject * Assunto a ser preenchido. */ public void setSubject(String subject) { this.subject.sendKeys(subject != null ? subject : ""); } /** * Preenche corpo (texto) do email. * * @param body * Texto a ser preenchido. */ public void setBody(String body) { // Foi o unico jeito que consegui pegar o richtexteditor... if (body != null) { // Troca CR&|LF por
body = body.replaceAll("(\r\n|\r|\n|\n\r)", "
"); ((JavascriptExecutor) driver) .executeScript("document.getElementById('body_1').contentWindow.document.body.innerHTML='" + body + "';"); } } /** * @param to * @param subject * @param body */ public void composeEmail(String to, String subject, String body) { this.createNewEmail(); this.to.sendKeys(to); this.setSubject(subject); this.setBody(body); } public String readEmail(String subject) { // waitForElementByXpath("//div[@id='exmail_main_body']/table[1]/tbody[@id='border_tbody']/tr[1]/td[2]/table/tbody/tr/td[1]"); String id = findEmailIdBySubject(subject); id = id.substring(id.lastIndexOf("_") + 1); clickElement(By.id("td_who_" + id)); super.waitForElement(By.id("div_message_scroll_" + id + "_r")); return id; } public void editEmail() { super.waitForElement(By .xpath("//div[@id='exmail_main_body']/div[2]/table/tbody/tr[1]/td/table/tbody/tr/td[2]/span[2]/span[1]")); // div[@id='exmail_main_body']/div[@id='content_id_9_r']/table/tbody/tr[1]/td/table/tbody/tr/td[2]/span[1] this.editEmail.click(); } public void editEmail(String id) { super.waitForElement(By .xpath("//div[@id='exmail_main_body']/div[2]/table/tbody/tr[1]/td/table/tbody/tr/td[2]/span[2]/span[1]")); // div[@id='exmail_main_body']/div[@id='content_id_9_r']/table/tbody/tr[1]/td/table/tbody/tr/td[2]/span[1] this.editEmail.click(); waitForElement(By.id("content_id_" + id)); } /** * Encaminha uma mensagem. * * @param id * Id da mensagem a ser encaminhada * @param to * Destinatario */ public void forwardEmail(String id, String to) { super.waitForElement(By .xpath("//div[@id='exmail_main_body']/div[2]/table/tbody/tr[1]/td/table/tbody/tr[1]/td[3]/span[3]")); this.forwardEmail.click(); super.waitForElement(By.id("to_" + id)); driver.findElement(By.id("to_" + id)).sendKeys(to); driver.findElement(By.id("send_button_" + id)).click(); } /** * Mostra detalhes (cabecalho do email sendo lido). * * @param id */ public void showDetails(String id) { driver.findElement(By.id("option_hide_more_" + id + "_r")).click(); } /** * Remove anexos do email sendo lido. */ public void removeAllAttachments() { driver.findElement( By.xpath("//div[@id='exmail_main_body']/div[2]/table/tbody/tr[2]/td/div[1]/table[1]/tbody/tr[5]/td[2]/a[1]")) .click(); Alert alert = driver.switchTo().alert(); assert ("ATENÇÃO: Após a confirmação dessa mensagem, TODOS os anexos da mesma serão apagados. Tenha certeza de que possui uma cópia dos arquivos importantes. Deseja confirmar a operação?" .equals(alert.getText())); alert.accept(); } public void blockRecipient(String message) { driver.findElement( By.xpath("//div[@id='exmail_main_body']/div[2]/table/tbody/tr[2]/td/div[1]/table[1]/tbody/tr[1]/td[1]/span[@id='tt_d']/img")) .click(); this.waitLoading(); Alert alert = driver.switchTo().alert(); assert (message.equals(alert.getText())); alert.accept(); } protected void waitLoading() { // Espera pelo "Carregando..." aparecer. waitForElement(By.id("divProgressBar")); waitForElement(By.id("divScrollMain_0")); // Espera pelo "Carregando..." desaparecer. isNotDisplayed(this .waitFindElement(By.id("divProgressBar"), 5000, 1000)); } private void reply(String id) { super.waitForElement(By.id("to_" + id)); driver.findElement(By.id("send_button_" + id)).click(); } /** * Responde uma mensagem. * * @param id * Id da mensagem a ser respondida */ public void replyEmail(String id) { super.waitForElement(By .xpath("//div[@id='exmail_main_body']/div[2]/table/tbody/tr[1]/td/table/tbody/tr[1]/td[3]/span[5]")); this.replyEmail.click(); this.reply(id); } /** * Responde uma mensagem. * * @param id * Id da mensagem a ser respondida */ public void replyAllEmailWithoutHistory(String id) { super.findAndClickElement("msg_opt_reply_options_" + id + "_r"); super.waitForElement(By .xpath("//div[@id='exmail_main_body']/div[2]/table/tbody/tr[1]/td/table/tbody/tr[2]/td/div/span[3]")); this.replyAllEmailWithoutHistory.click(); this.reply(id); } /** * Responde uma mensagem. * * @param id * Id da mensagem a ser respondida */ public void replyEmailWithoutHistory(String id) { super.findAndClickElement("msg_opt_reply_options_" + id + "_r"); super.waitForElement(By .xpath("//div[@id='exmail_main_body']/div[2]/table/tbody/tr[1]/td/table/tbody/tr[2]/td/div/span[2]")); this.replyEmailWithoutHistory.click(); this.reply(id); } /** * Responde uma mensagem. * * @param id * Id da mensagem a ser respondida */ public void replyAllEmail(String id) { super.findAndClickElement("msg_opt_reply_options_" + id + "_r"); super.waitForElement(By .xpath("//div[@id='exmail_main_body']/div[2]/table/tbody/tr[1]/td/table/tbody/tr[2]/td/div/span[1]")); this.replyAllEmail.click(); this.reply(id); } /** * Abre uma pasta de email especifica. * * @param folder * Pasta de email a ser aberta. */ public void openFolder(String folder, boolean waitEmail) { waitForElement(By.id(folder)); clickElement(By.id(folder)); // Espera pelo "Carregando..." aparecer. waitForElement(By.id("divProgressBar")); waitForElement(By.id("divScrollMain_0")); // Espera pelo "Carregando..." desaparecer. isNotDisplayed(this .waitFindElement(By.id("divProgressBar"), 5000, 1000)); if (waitEmail) { waitForElement(By .xpath("//div[@id='divScrollMain_0']/table[@id='table_box']/tbody[@id='tbody_box']/tr[1]/td[1]/input[1]")); } } public void openFolder(String folder) { openFolder(folder, true); } /** * Abre uma pasta de email especifica. * * @param folder * Pasta de email a ser aberta. */ public void openFolder(WebElement folder) { folder.click(); waitForElement(By.id("divScrollMain_0")); } /** * Filtra somente as mensagens importantes. */ public void setImportantFilter() { this.importantFilter.click(); } /** * Filtra somente as mensagens lidas. */ public void setReadFilter() { this.readFilter.click(); } /** * Filtra somente as mensagens nao lidas. */ public void setNotReadFilter() { this.notReadFilter.click(); } /** * Filtra somente as mensagens respondidas. */ public void setAnsweredFilter() { this.answeredFilter.click(); } /** * Limpa a lixeira. */ public void cleanupTrash() { this.openFolder(this.trashFolder); this.emptyTrashLink.click(); } /** * @return Numero de emails na pasta selecionada. */ public int getTotalEmails() { return Integer.valueOf(this.totalEmails.getText()); } /** * Move email para um pasta no servidor. * * @param folderName * Nome da pasta pre-existente no servidor. */ public void moveEmail(String folderName) { this.moveEmailLink.click(); super.findAndClickElement("lINBOX/" + folderName + "wfolders_tree"); this.moveEmailButton.click(); } /** * Edita nome de pasta. */ public MailFolderPage editFolder() { this.toolsMenu.click(); this.waitForElement(By .xpath("//div[@id='menu_tools']/table/tbody/tr[4]/td")); this.editFolder.click(); return PageFactory.initElements(driver, MailFolderPage.class); } /** * Edita filtros. */ public MailFilterPage editFilter() { this.toolsMenu.click(); this.waitForElement(By .xpath("//div[@id='menu_tools']/table/tbody/tr[3]/td")); this.editFilter.click(); this.waitForElement(By.id("set_rules_img")); return PageFactory.initElements(driver, MailFilterPage.class); } /** * Marca email sendo composto como importante. */ public void checkImportantFlag() { this.important.click(); } /** * Marca email como importante apos ler. */ public void setImportantFlag() { this.waitForElement(By .xpath("//div[@id='exmail_main_body']/div[2]/table/tbody/tr[1]/td/table/tbody/tr[1]/td[2]/span[3]")); this.importantFlag.click(); } /** * Marca email como normal apos ler. */ public void setNormalFlag() { this.waitForElement(By .xpath("//div[@id='exmail_main_body']/div[2]/table/tbody/tr[1]/td/table/tbody/tr[1]/td[2]/span[3]")); this.normalFlag.click(); } /** * Marca email como nao lido apos ler. */ public void setNotReadFlag() { this.waitForElement(By .xpath("//div[@id='exmail_main_body']/div[2]/table/tbody/tr[1]/td/table/tbody/tr[1]/td[2]/span[2]")); this.notReadFlag.click(); } /** * Marca solicitacao de confirmacao de leitura do email sendo composto. */ public void checkReturnReceipt() { this.returnReceipt.click(); } /** * Salva email sendo composto (devera ir para a pasta de Rascunhos). * * TODO adicionar teste para verificar se o email realmente esta presente na * pasta Rascunhos?? */ public void saveEmail() { this.saveEmail.click(); } /** * Apaga email previamente selecionado. */ public void deleteEmail() { this.deleteEmailLink.click(); } /** * Exporta email previamente selecionado. */ public void exportEmail() { this.exportEmailLink.click(); } /** * Seleciona todos emails da pasta corrente. */ public void selectAllEmails() { this.selectAllEmails.click(); } /** * Adiciona email no campo de copia oculta. * * @param email * Email a ser adicionado. */ public void setBlindCarbonCopy(String email) { this.blindCarbonCopyLink.click(); this.blindCarbonCopy.sendKeys(email); } /** * Adiciona email no campo de copia. * * @param email * Email a ser adicionado. */ public void setCarbonCopy(String email) { this.carbonCopyLink.click(); this.carbonCopy.sendKeys(email); } /** * Anexo um arquivo no email sendo composto. * * @param attachment * Caminho para o arquivo a ser anexado. */ public void addAttachment(String attachment) { this.attachmentLink.click(); this.attachment.sendKeys(attachment); } /** * Remove anexo do email sendo composto. */ public void removeAttachment() { this.removeAttachmentLink.click(); } public void addAttachment2(String attachment) { this.attachmentLink.click(); this.attachment2.sendKeys(attachment); } /** * Envia email sendo composto. */ public void sendMail() { this.send.click(); } /** * Fecha aba do email sendo composto e confirma que email nao esta salvo. */ public void closeMail() { this.closeMail(true); } /** * @param discardEmail */ public void closeMail(boolean discardEmail) { // Na versao Serpro: // td[@id='border_id_1']/table/tbody/tr/td[2]/img // Na versao Comunidade: // td[@id='border_id_1']/div/div[2]/img // Resolvi usando o xpath abaixo: super.clickElement(By.xpath("//td[@id='border_id_1']//img")); // if (checkAlert) { // Alert closeAlert = driver.switchTo().alert(); // closeAlert.accept(); // } // Clica em descartar. if (discardEmail) { super.clickElement(By .xpath("//div[@id='lertWindow']/div[@id='lertButtons']/a[2]")); } } public void closeMail(String id, boolean discardEmail) { super.clickElement(By.xpath("//td[@id='border_id_" + id + "']//img")); // Clica em cancelar if (discardEmail) { super.clickElement(By .xpath("//div[@id='lertWindow']/div[@id='lertButtons']/a[2]")); } } /** * Envia email. * * @param id * Id do email a ser enviado. */ public void sendMail(String id) { super.findAndClickElement("send_button_" + id); } /** * @param to * @param subject */ public void composeEmail(String to, String subject) { composeEmail(to, subject, null); } /** * @param to */ public void composeEmail(String to) { composeEmail(to, null, null); } /** * Procura um email pelo assunto. * * @param subject * Assunto a ser procurado. * @param select * Se email encontrado, deseja seleciona-lo? * @return "id" do email se encontrar, null se nao encontrar. */ public String findEmailIdBySuject(String subject, boolean select) { // System.out.println("searching for --------->" + subject); String html = driver.getPageSource(); // System.out.println(html.indexOf(subject)); // System.out.println(html); if (html.indexOf(subject) >= 0) { String part1 = StringUtils.substringBefore(html, subject); int start = StringUtils.lastIndexOf(part1, "id=\"") + 4; int last = StringUtils.indexOf(part1, "\"", start); String id = StringUtils.substring(part1, start, last); // System.out.println(id); if (select) { // Marca checkbox correspondente ao id da mensagem. clickElement(By.id("check_box" + id.substring(1))); } return id; } System.out.println("email not found"); return null; } /** * @return Ids de todos os emails da pasta selecionada. */ public String[] getEmailIds() { String[] ids = new String[this.getTotalEmails()]; for (int i = 1; i <= this.getTotalEmails(); i++) { String id = driver .findElement( By.xpath("//div[@id='divScrollMain_0']/table[@id='table_box']/tbody[@id='tbody_box']/tr[" + i + "]/td[1]/input[1]")).getAttribute( "id"); ids[i - 1] = id.substring(id.lastIndexOf("_") + 1); } return ids; } /** * @param emailId * Id do email. * @return true se email importante, false caso * contrario. */ public boolean isImportant(String emailId) { return super .isDisplayed((RenderedWebElement) driver.findElement(By .xpath("//div[@id='exmail_main_body']/div[@id='content_id_0']/div[@id='divScrollMain_0']/table[@id='table_box']/tbody[@id='tbody_box']/tr[@id='" + emailId + "']/td[5]/img"))); } /** * @param emailId * Id do email. * @return true se email lido, false caso * contrario. */ public boolean isRead(String emailId) { return super .isDisplayed((RenderedWebElement) driver.findElement(By .xpath("//div[@id='exmail_main_body']/div[@id='content_id_0']/div[@id='divScrollMain_0']/table[@id='table_box']/tbody[@id='tbody_box']/tr[@id='" + emailId + "']/td[@id='td_message_unseen_" + emailId + "']/img"))); } /** * @param emailId * Id do email. * @return true se email nao lido, false caso * contrario. */ public boolean isNotRead(String emailId) { return super .isDisplayed((RenderedWebElement) driver.findElement(By .xpath("//div[@id='exmail_main_body']/div[@id='content_id_0']/div[@id='divScrollMain_0']/table[@id='table_box']/tbody[@id='tbody_box']/tr[@id='" + emailId + "']/td[@id='td_message_unseen_" + emailId + "']/img"))); } /** * @param emailId * Id do email. * @return true se email respondido, false caso * contrario. */ public boolean isAnswered(String emailId) { return super .isDisplayed((RenderedWebElement) driver.findElement(By .xpath("//div[@id='exmail_main_body']/div[@id='content_id_0']/div[@id='divScrollMain_0']/table[@id='table_box']/tbody[@id='tbody_box']/tr[@id='" + emailId + "']/td[@id='td_message_answered_" + emailId + "']/img"))); } /** * Procura email baseado no assunto na pasta corrente. * * @param subject * Assunto a ser pesquisado. * @return Id do email encontrado. */ public String findEmailIdBySubject(String subject) { return findEmailIdBySuject(subject, false); } /** * Procura email baseado no assunto em uma pasta especifica. * * @param folder * Pasta de pesquisa. * @param subject * Assunto a ser pesquisado. * @return Id do email encontrado. */ public String findEmailIdBySubject(String folder, String subject) { this.openFolder(folder); return findEmailIdBySuject(subject, false); } /** * Verifica se mensagem informada corresponde ao exibido pelo Expresso na * div onde sao exibidas mensagens ao usuario. * * @param message * Mensagem a ser validada. */ public void assertMessage(String message) { Assert.assertEquals(getDisplayedElementContent("em_div_write_msg"), message); } /** * @return the to */ public WebElement getTo(String id) { waitForElement(By.id("to_" + id)); // findAndClickElement("to_" + id); // return getDisplayedElementContent(id); return driver.findElement(By.id("to_" + id)); } /** * @return the subject */ public WebElement getSubject(String id) { waitForElement(By.id("subject_" + id)); return driver.findElement(By.id("subject_" + id)); } /** * @return the blindCarbonCopy */ public WebElement getBlindCarbonCopy(String id) { waitForElement(By.id("cco_" + id)); return driver.findElement(By.id("cco_" + id)); } /** * @return the carbonCopy */ public WebElement getCarbonCopy(String id) { waitForElement(By.id("cc_" + id)); return driver.findElement(By.id("cc_" + id)); } /** * @param id * Id do email. * @return Texto do email. */ public Object getBody(String id) { waitForElement(By.id("body_" + id)); return ((JavascriptExecutor) driver) .executeScript("return document.getElementById('body_" + id + "').contentWindow.document.body.innerHTML;"); } }