Перейти к содержимому

Фотография

Регистрация и восстановление пароля

почта пароль Java IDEA Webdriver

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 16

#1 holydiverinc

holydiverinc

    Новый участник

  • Members
  • Pip
  • 25 сообщений
  • ФИО:Владимир Черный
  • Город:Киев

Отправлено 23 ноября 2015 - 11:43

Приветствую!

На сей раз у меня возникла проблема с написанием теста для проверки регистрации и восстановлением пароля.

Для регистрации использую сервис одноразовой почты 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;
        }
    }
}


  • 0

#2 user12

user12

    Специалист

  • Members
  • PipPipPipPipPip
  • 894 сообщений
  • ФИО:Виктор
  • Город:Минск


Отправлено 23 ноября 2015 - 11:52

Ты же не собрался почту тестировать ? :)

без хардкода

 

1. Заходим, забираем почтовый ящик

2. Открываем новую вкладку, переходим на целевой сайт

 

 

Тебе необходимо использовать JavaMail, для чтения писем с почты


  • 0

#3 Tishka

Tishka

    Постоянный участник

  • Members
  • PipPipPip
  • 211 сообщений
  • ФИО:Ахрамеев Антон

Отправлено 23 ноября 2015 - 11:53

 

Приветствую!

На сей раз у меня возникла проблема с написанием теста для проверки регистрации и восстановлением пароля.

Для регистрации использую сервис одноразовой почты dropmail.me

Реализовано:

1. Заходим, забираем почтовый ящик

2. Открываем новую вкладку, переходим на целевой сайт

3. Регистрируемся 

4. Разлогиниваемся и "забываем пароль"

 

Не реализовано:

3.1 Добавить проверку, что регистрация прошла успешно

5. Переключаемся на почту, находим письмо.В высланном письме есть:

    б) сам пароль (всегда 8 символов), который нужно сохранить в переменную, чтобы потом залогиниться

    а) ссылка, на которую надо кликнуть для подтверждения изменения пароля (откроется окно)

6. Залогиниться с новым паролем

7. Проверить, залогинился ли

 

Ниже приведен недоделанный код. Подскажите, в каком направлении двигаться, что читать или само решение.

 

PS: может посоветуете сервис одноразовой почты поприветливее интерфейсом, чтобы письма без задержек приходили (mail temp сначала нормально присылал, потом стал с задержкой в 1+ час)

 

1. Откажитесь от использования сторонних сервисов, того же почтового ящика.

Можно выдергивать данные прямо из бд.

2. Проверка того что пользователь зарегистрирован, можно тоже через бд. Там может стоять флаг и запись в таблице users

3. Ссылку на подтверждение тоже можно "дернуть" из бд

4. Проверка залогинен или нет может быть тот же аватар или ссылка на личный кабинет, в зависимости от логики.


  • 0

#4 holydiverinc

holydiverinc

    Новый участник

  • Members
  • Pip
  • 25 сообщений
  • ФИО:Владимир Черный
  • Город:Киев

Отправлено 23 ноября 2015 - 12:33

 

 

Приветствую!

На сей раз у меня возникла проблема с написанием теста для проверки регистрации и восстановлением пароля.

Для регистрации использую сервис одноразовой почты dropmail.me

Реализовано:

1. Заходим, забираем почтовый ящик

2. Открываем новую вкладку, переходим на целевой сайт

3. Регистрируемся 

4. Разлогиниваемся и "забываем пароль"

 

Не реализовано:

3.1 Добавить проверку, что регистрация прошла успешно

5. Переключаемся на почту, находим письмо.В высланном письме есть:

    б) сам пароль (всегда 8 символов), который нужно сохранить в переменную, чтобы потом залогиниться

    а) ссылка, на которую надо кликнуть для подтверждения изменения пароля (откроется окно)

6. Залогиниться с новым паролем

7. Проверить, залогинился ли

 

Ниже приведен недоделанный код. Подскажите, в каком направлении двигаться, что читать или само решение.

 

PS: может посоветуете сервис одноразовой почты поприветливее интерфейсом, чтобы письма без задержек приходили (mail temp сначала нормально присылал, потом стал с задержкой в 1+ час)

 

1. Откажитесь от использования сторонних сервисов, того же почтового ящика.

Можно выдергивать данные прямо из бд.

2. Проверка того что пользователь зарегистрирован, можно тоже через бд. Там может стоять флаг и запись в таблице users

3. Ссылку на подтверждение тоже можно "дернуть" из бд

4. Проверка залогинен или нет может быть тот же аватар или ссылка на личный кабинет, в зависимости от логики.

 

к БД доступ только ручками в TOAD через drp, так что не вариант


  • 0

#5 holydiverinc

holydiverinc

    Новый участник

  • Members
  • Pip
  • 25 сообщений
  • ФИО:Владимир Черный
  • Город:Киев

Отправлено 23 ноября 2015 - 12:50

Ты же не собрался почту тестировать ? :)

без хардкода

 

1. Заходим, забираем почтовый ящик

2. Открываем новую вкладку, переходим на целевой сайт

 

 

Тебе необходимо использовать JavaMail, для чтения писем с почты

Дело в том, что зарегистрировать одного юзера (по мылу) можно только один раз. Поэтому и обратился к сервису, который выдает всегда выдает "чистую" для моей системы почту, дабы регистрация не сказала "такой юзер существует"


  • 0

#6 user12

user12

    Специалист

  • Members
  • PipPipPipPipPip
  • 894 сообщений
  • ФИО:Виктор
  • Город:Минск


Отправлено 23 ноября 2015 - 13:01

Т.е. изменить уже почту у пользователя нельзя ?

Если нельзя или долгло, то можно как в gmail(про остальные почты - хз)

xxxxx@gmail.com

xxxxx+1@gmail.com

xxxxx+2@gmail.com

xxxxx+100500@gmail.com

 

Все будет приходить на xxxxx@gmail.com


  • 0

#7 holydiverinc

holydiverinc

    Новый участник

  • Members
  • Pip
  • 25 сообщений
  • ФИО:Владимир Черный
  • Город:Киев

Отправлено 23 ноября 2015 - 13:04

Т.е. изменить уже почту у пользователя нельзя ?

Если нельзя или долгло, то можно как в gmail(про остальные почты - хз)

xxxxx@gmail.com

xxxxx+1@gmail.com

xxxxx+2@gmail.com

xxxxx+100500@gmail.com

 

Все будет приходить на xxxxx@gmail.com

почту изменять нельзя

а про g-mail не совсем понял


  • 0

#8 seven_sunsets

seven_sunsets

    Новый участник

  • Members
  • Pip
  • 18 сообщений
  • ФИО:Гришаев Станислав

Отправлено 23 ноября 2015 - 13:10

 

 

а про g-mail не совсем понял

 

добавление плюса с числом к адресу почты gmail позволяет получать письма по основному адресу при этом используя уникальный адрес, каждый раз когда это необходимо 


  • 0

#9 holydiverinc

holydiverinc

    Новый участник

  • Members
  • Pip
  • 25 сообщений
  • ФИО:Владимир Черный
  • Город:Киев

Отправлено 23 ноября 2015 - 13:44

Всем спасибо за наставления! Понял в каком направлении копать. По завершению кодинга выложу готовое решение.

 

upd: Поле логина не пускает "+" на нашем сайте

upd1: Доказал программистам, что + валидный знак для имейлов


Сообщение отредактировал holydiverinc: 23 ноября 2015 - 14:15

  • 0

#10 Lzk

Lzk

    Специалист

  • Members
  • PipPipPipPipPip
  • 504 сообщений
  • ФИО:Олег
  • Город:Мск

Отправлено 23 ноября 2015 - 22:51

PS: может посоветуете сервис одноразовой почты поприветливее интерфейсом, чтобы письма без задержек приходили (mail temp сначала нормально присылал, потом стал с задержкой в 1+ час)

Mailinator.com
  • 0

#11 tshuvaev

tshuvaev

    Новый участник

  • Members
  • Pip
  • 53 сообщений
  • ФИО:Timur
  • Город:Москва

Отправлено 24 ноября 2015 - 10:02

мне сюда быстро приходит http://10minutemail....Mail/index.html


  • 0

#12 bobylev

bobylev

    Активный участник

  • Members
  • PipPip
  • 77 сообщений
  • ФИО:Бобылев Максим

Отправлено 30 ноября 2015 - 13:54

 

Можно выдергивать данные прямо из бд.

2. Проверка того что пользователь зарегистрирован, можно тоже через бд. Там может стоять флаг и запись в таблице users

3. Ссылку на подтверждение тоже можно "дернуть" из бд

 

 

В этом случае обязательно должен быть отдельный тесткейс, что в письме приходит правильная ссылка.

На практике встречал случаи, когда механизм формирования динамических ссылок в письмах работал некорректно.


  • 0

#13 vit1251

vit1251

    Новый участник

  • Members
  • Pip
  • 26 сообщений
  • ФИО:vit1251


Отправлено 30 ноября 2015 - 21:19

А почему не используете специализированные решения SMTP серверов для QA такие как

emailvoid.com и mesghub.com?


  • 0

#14 holydiverinc

holydiverinc

    Новый участник

  • Members
  • Pip
  • 25 сообщений
  • ФИО:Владимир Черный
  • Город:Киев

Отправлено 01 декабря 2015 - 11:14

А почему не используете специализированные решения SMTP серверов для QA такие как

emailvoid.com и mesghub.com?

планирую использовать javamail, но пока руки не дошли еще, т.к. автоматизирую в свободное время


  • 0

#15 vit1251

vit1251

    Новый участник

  • Members
  • Pip
  • 26 сообщений
  • ФИО:vit1251


Отправлено 11 февраля 2016 - 22:20

 

А почему не используете специализированные решения SMTP серверов для QA такие как

emailvoid.com и mesghub.com?

планирую использовать javamail, но пока руки не дошли еще, т.к. автоматизирую в свободное время

 

Посмотрите наше решение http://www.mesghub.com/. Уверен Вам понравиться. Кстати у нас было решение для Java, но вот только оно что-то не в публичном доступе по некоторым соображениям, но скоро думаю мы решим этот вопрос.


  • 0

#16 holydiverinc

holydiverinc

    Новый участник

  • Members
  • Pip
  • 25 сообщений
  • ФИО:Владимир Черный
  • Город:Киев

Отправлено 25 мая 2016 - 09:51

 

А почему не используете специализированные решения SMTP серверов для QA такие как

emailvoid.com и mesghub.com?

планирую использовать javamail, но пока руки не дошли еще, т.к. автоматизирую в свободное время

 

javamail не использовал, т.к. перешел на Selenide, там есть хорошие решения и проще


  • 0

#17 elvis

elvis

    Постоянный участник

  • Members
  • PipPipPip
  • 189 сообщений
  • Город:Tallinn


Отправлено 25 мая 2016 - 11:32

Есть готовые решения поверх javamail - с ходу не назову, надо гуглить. Я для себя написал для gmail утилиту дёргающую почту через javamail. 


  • 0



Темы с аналогичным тегами почта, пароль, Java, IDEA, Webdriver

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных