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;");
}
}