Приветствую!
На сей раз у меня возникла проблема с написанием теста для проверки регистрации и восстановлением пароля.
Для регистрации использую сервис одноразовой почты dropmail.me
Реализовано:
1. Заходим, забираем почтовый ящик
2. Открываем новую вкладку, переходим на целевой сайт
3. Регистрируемся
4. Разлогиниваемся и "забываем пароль"
Не реализовано:
3.1 Добавить проверку, что регистрация прошла успешно
5. Переключаемся на почту, находим письмо.В высланном письме есть:
б) сам пароль (всегда 8 символов), который нужно сохранить в переменную, чтобы потом залогиниться
а) ссылка, на которую надо кликнуть для подтверждения изменения пароля (откроется окно)
6. Залогиниться с новым паролем
7. Проверить, залогинился ли
Ниже приведен недоделанный код. Подскажите, в каком направлении двигаться, что читать или само решение.
PS: может посоветуете сервис одноразовой почты поприветливее интерфейсом, чтобы письма без задержек приходили (mail temp сначала нормально присылал, потом стал с задержкой в 1+ час)
package com.holydiverinc.webdriver; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.openqa.selenium.*; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.firefox.FirefoxProfile; import org.openqa.selenium.firefox.internal.ProfilesIni; import java.util.concurrent.TimeUnit; import static org.junit.Assert.fail; public class YTPasswordRecovery { private WebDriver driver; private String baseUrl; private boolean acceptNextAlert = true; private StringBuffer verificationErrors = new StringBuffer(); @Before public void setUp() throws Exception { FirefoxProfile profile = new ProfilesIni().getProfile("Webdriver"); driver = new FirefoxDriver(profile); baseUrl = "https://yt.ua/ru"; driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); driver.manage().window().maximize(); } @Test public void ytRegistration() throws Exception { //забираем почтовый ящик driver.navigate().to("http://dropmail.me/ru/"); Thread.sleep(5000); driver.findElement(By.xpath("//h2/span")).click(); driver.findElement(By.xpath("//h2/span")).sendKeys(Keys.chord(Keys.CONTROL, "c")); //новая вкладка driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL + "t"); //открываем целевой сайт, регистрируемся driver.get(baseUrl); driver.findElement(By.xpath("//div[@id='ytLogin']")).click(); driver.findElement(By.xpath("//div[@id='ytAuthWindow']/div[2]/table/tbody/tr/td[4]/div/img")).click(); driver.findElement(By.xpath("//div[@id='ytLoginRegistration']/div/input")).click(); driver.findElement(By.xpath("//div[@id='ytLoginRegistration']/div/input")).sendKeys(Keys.chord(Keys.CONTROL, "v")); driver.findElement(By.xpath("//div[@id='ytLoginRegistration']/div/input[2]")).clear(); driver.findElement(By.xpath("//div[@id='ytLoginRegistration']/div/input[2]")).sendKeys("111111Qq"); driver.findElement(By.xpath("//div[@id='ytLoginRegistration']/div/input[3]")).clear(); driver.findElement(By.xpath("//div[@id='ytLoginRegistration']/div/input[3]")).sendKeys("111111Qq"); driver.findElement(By.xpath("//button[@onclick='auth.onRegister();']")).click(); driver.findElement(By.xpath("//button[@id='popup_ok']")).click(); //разлогиниваемся и "теряем" пароль driver.findElement(By.xpath("//div[@id='ytLogout']")).click(); driver.findElement(By.xpath("//button[@id='popup_ok']")).click(); driver.findElement(By.xpath("//div[@id='ytLogin']")).click(); driver.findElement(By.cssSelector("p.pass-reset")).click(); driver.findElement(By.xpath("//button[@id='popup_ok']")).click(); driver.findElement(By.xpath("//button[@id='popup_ok']")).click(); driver.findElement(By.cssSelector("body")).sendKeys(Keys.chord(Keys.CONTROL, Keys.TAB)); //восстанавливаем пароль } private void assertEquals(String s, String text) { } @After public void tearDown() throws Exception { driver.quit(); String verificationErrorString = verificationErrors.toString(); if (!"".equals(verificationErrorString)) { fail(verificationErrorString); } } private boolean isElementPresent(By by) { try { driver.findElement(by); return true; } catch (NoSuchElementException e) { return false; } } private boolean isAlertPresent() { try { driver.switchTo().alert(); return true; } catch (NoAlertPresentException e) { return false; } } private String closeAlertAndGetItsText() { try { Alert alert = driver.switchTo().alert(); String alertText = alert.getText(); if (acceptNextAlert) { alert.accept(); } else { alert.dismiss(); } return alertText; } finally { acceptNextAlert = true; } } }