source: devel/testlink/automation2.0/src/test/java/br/gov/serpro/expresso/cte/pages/email/MailPage.java @ 3663

Revision 3663, 5.7 KB checked in by luiz-fernando, 13 years ago (diff)

Ticket #1402 - Nova versão dos casos de testes, agora implementados com WebDriver? (Selenium 2.0)

Line 
1package br.gov.serpro.expresso.cte.pages.email;
2
3import org.apache.commons.lang.StringUtils;
4import org.openqa.selenium.JavascriptExecutor;
5import org.openqa.selenium.WebDriver;
6import org.openqa.selenium.WebElement;
7import org.openqa.selenium.support.FindBy;
8
9import br.gov.serpro.expresso.cte.pages.common.Page;
10
11/**
12 * @author L.F.Estivalet (Serpro)
13 *
14 *         Created on Dec 16, 2010 at 9:43:21 AM
15 *
16 */
17public class MailPage extends Page {
18
19        @FindBy(xpath = "//table[@id='folders_tbl']/tbody/tr[1]/td/table/tbody/tr[2]/td/div/span")
20        private WebElement newEmail;
21
22        @FindBy(id = "to_1")
23        private WebElement to;
24
25        @FindBy(id = "subject_1")
26        private WebElement subject;
27
28        @FindBy(id = "send_button_1")
29        private WebElement send;
30
31        @FindBy(id = "important_message_1")
32        private WebElement important;
33
34        @FindBy(id = "return_receipt_1")
35        private WebElement returnReceipt;
36
37        @FindBy(id = "a_cco_link_1")
38        private WebElement blindCarbonCopyLink;
39
40        @FindBy(id = "cco_1")
41        private WebElement blindCarbonCopy;
42
43        @FindBy(id = "a_cc_link_1")
44        private WebElement carbonCopyLink;
45
46        @FindBy(id = "cc_1")
47        private WebElement carbonCopy;
48
49        @FindBy(id = "save_message_options_1")
50        private WebElement saveEmail;
51
52        @FindBy(xpath = "//div[@id='div_message_scroll_1']/form/table/tbody/tr[10]/td[2]/a")
53        private WebElement attachmentLink;
54
55        @FindBy(id = "inputFile_1_1")
56        private WebElement attachment;
57
58        @FindBy(xpath = "//div[@id='footer_menu']/table[@id='footer_box']/tbody/tr[@id='table_message']/td[@id='span_options']/span[1]/span")
59        private WebElement deleteEmailLink;
60
61        @FindBy(id = "lINBOX/Trashtree_folders")
62        private WebElement trashFolder;
63
64        @FindBy(id = "empty_trash")
65        private WebElement emptyTrashLink;
66
67        @FindBy(id = "divScrollMain_0")
68        private WebElement emailsListDiv;
69
70        @FindBy(id = "tot_m")
71        private WebElement totalEmails;
72
73        /**
74         * @param driver
75         */
76        public MailPage(WebDriver driver) {
77                super(driver);
78        }
79
80        /**
81         * @param to
82         * @param subject
83         * @param body
84         */
85        public void composeEmail(String to, String subject, String body) {
86                this.newEmail.click();
87                waitForElementById("to_1");
88                this.to.sendKeys(to);
89                this.subject.sendKeys(subject != null ? subject : "");
90
91                // Foi o unico jeito que consegui pegar o richtexteditor...
92                if (body != null) {
93                        ((JavascriptExecutor) driver)
94                                        .executeScript("document.getElementById('body_1').contentWindow.document.body.innerHTML='"
95                                                        + body + "';");
96                }
97        }
98
99        /**
100         * Abre uma pasta de email especifica.
101         *
102         * @param folder
103         *            Pasta de email a ser aberta.
104         */
105        public void openFolder(String folder) {
106                clickElement(folder);
107                waitForElementById("divScrollMain_0");
108        }
109
110        /**
111         * Abre uma pasta de email especifica.
112         *
113         * @param folder
114         *            Pasta de email a ser aberta.
115         */
116        public void openFolder(WebElement folder) {
117                folder.click();
118                waitForElementById("divScrollMain_0");
119        }
120
121        /**
122         * Limpa a lixeira.
123         */
124        public void cleanupTrash() {
125                this.openFolder(this.trashFolder);
126                this.emptyTrashLink.click();
127        }
128
129        /**
130         * @return Numero de emails na pasta selecionada.
131         */
132        public int getTotalEmails() {
133                return Integer.valueOf(this.totalEmails.getText());
134        }
135
136        /**
137         * Marca email sendo composto como importante.
138         */
139        public void setImportantFlag() {
140                this.important.click();
141        }
142
143        /**
144         * Marca solicitacao de confirmacao de leitura do email sendo composto.
145         */
146        public void setReturnReceipt() {
147                this.returnReceipt.click();
148        }
149
150        /**
151         * Salva email sendo composto (devera ir para a pasta de Rascunhos).
152         *
153         * TODO adicionar teste para verificar se o email realmente esta presente na
154         * pasta Rascunhos??
155         */
156        public void saveEmail() {
157                this.saveEmail.click();
158        }
159
160        /**
161         * Apaga email previamente selecionado.
162         */
163        public void deleteEmail() {
164                this.deleteEmailLink.click();
165        }
166
167        /**
168         * Adiciona email no campo de copia oculta.
169         *
170         * @param email
171         *            Email a ser adicionado.
172         */
173        public void setBlindCarbonCopy(String email) {
174                this.blindCarbonCopyLink.click();
175                this.blindCarbonCopy.sendKeys(email);
176        }
177
178        /**
179         * Adiciona email no campo de copia.
180         *
181         * @param email
182         *            Email a ser adicionado.
183         */
184        public void setCarbonCopy(String email) {
185                this.carbonCopyLink.click();
186                this.carbonCopy.sendKeys(email);
187        }
188
189        /**
190         * Anexo um arquivo no email sendo composto.
191         *
192         * @param attachment
193         *            Caminho para o arquivo a ser anexado.
194         */
195        public void addAttachment(String attachment) {
196                this.attachmentLink.click();
197                this.attachment.sendKeys(attachment);
198        }
199
200        /**
201         * Envia email sendo composto.
202         */
203        public void sendMail() {
204                this.send.click();
205        }
206
207        /**
208         * @param to
209         * @param subject
210         */
211        public void composeEmail(String to, String subject) {
212                composeEmail(to, subject, null);
213        }
214
215        /**
216         * @param to
217         */
218        public void composeEmail(String to) {
219                composeEmail(to, null, null);
220        }
221
222        /**
223         * Procura um email pelo assunto.
224         *
225         * @param subject
226         *            Assunto a ser procurado.
227         * @param select
228         *            Se email encontrado, deseja seleciona-lo?
229         * @return "id" do email.
230         */
231        public String findEmailIdBySuject(String subject, boolean select) {
232                String html = driver.getPageSource();
233                String part1 = StringUtils.substringBefore(html, subject);
234                int start = StringUtils.lastIndexOf(part1, "id=\"") + 4;
235                int last = StringUtils.indexOf(part1, "\"", start);
236                String id = StringUtils.substring(part1, start, last);
237
238                if (select) {
239                        // Marca checkbox correspondente ao id da mensagem.
240                        clickElement("check_box" + id.substring(1));
241                }
242                return id;
243        }
244
245        /**
246         * Verifica se mensagem informada corresponde ao exibido pelo Expresso na
247         * div onde sao exibidas mensagens ao usuario.
248         *
249         * @param message
250         *            Mensagem a ser validada.
251         */
252        public void assertMessage(String message) {
253                assert message.equals(getDisplayedElementContent("em_div_write_msg"));
254        }
255}
Note: See TracBrowser for help on using the repository browser.