Рубрики
Uncategorized

Тестирование регистрации с реальными электронными письмами — Учебное пособие по электронной почте Selenium Java (с примерами)

Селен — это мощная структура тестирования браузера. Эта статья покажет вам, как использовать реальное объявление по электронной почте … Tagged с тестированием, Java, Security, DevOps.

Селен — это мощная структура тестирования браузера. Эта статья покажет вам, как использовать реальные адреса электронной почты в тестах Selenium — не требуется почтовый сервер. Эти тесты могут быть объединены с автоматическими тестовыми потоками или трубопроводами DevOps для проверки безопасности или функциональности приложения.

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

Это представляет собой проблему для тестеров QA с использованием Selenium: как мы проверяем процессы, связанные с электронной почтой? Ну, с бесплатными API -интерфейсом учетной записи электронной почты, такими как MailSlurp Мы можем создавать адреса электронной почты в тестах и контролировать их из кода.

Давайте посмотрим пример.

Пример использования

Для этого примера давайте напишем тест селена, чтобы подписать пользователя в фиктивное веб -приложение.

Исходный код для этого примера — Доступно на GitHub

Тестовое приложение

Мы тестируем против Playground.mailslurp.com Для этого примера простое приложение React с процессом регистрации пользователя.

Зарегистрируйтесь процесс

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

После подтверждения пользователь может получить доступ к изображению собаки, входя в систему!

Мы проверим этот процесс конец до конца.

Процесс испытания

Мы используем Selenium для загрузки формы логина игровой площадки в Firefox. Затем мы используем MailSlurp для генерации адреса электронной почты. Затем мы вводим адрес электронной почты в форму регистрации, получаем приветственное электронное письмо с MailSlurp, извлеките код проверки и подтвердим пользователя. Мы рассмотрим каждый шаг с примерами.

Сначала давайте настроем проект, чтобы включить Junit, Selenium и MailSlurp Java Sdk Анкет

Maven Setup

Если вы используете Maven, создайте pom.xml вот так:



    4.0.0

    org.example
    java-maven-selenium
    1.0-SNAPSHOT
    
        
            jitpack.io
            https://jitpack.io
        
    
    
        
            com.github.mailslurp
            mailslurp-client-java
            7.0.11-RELEASE
        
        
            org.seleniumhq.selenium
            selenium-java
            3.4.0
        
        
            junit
            junit
            4.12
            test
        
    


Градл настройка

Или если вы используете Gradle, создайте build.gradle вот так:

plugins {
    id 'java'
}

group 'org.example'
version '1.0-SNAPSHOT'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
    // jitpack for mailslurp
    maven { url 'https://jitpack.io' }
}

dependencies {
    testCompile 'junit:junit:4.12'
    testCompile 'org.seleniumhq.selenium:selenium-java:3.4.0'

    // mailslurp client
    testCompile 'com.github.mailslurp:mailslurp-client-java:7.0.11-RELEASE'
}

Скачать Webdriver

Далее вам нужно скачать WebDriver для вашей платформы. Мы предпочитаем Геккодривер Для автоматизации Firefox, но вы можете использовать Chromedriver с хромом или любым другим, если вы предпочитаете.

Настройка селена

Теперь мы можем создать тест и настроить Selenium и MailSlurp. Вам нужен ключ API для использования MailSlurp, но это бесплатно для личного использования. Получите Ключ API здесь Затем создайте подобный тест:

public class ExampleUsageTest {
    private static final String YOUR_API_KEY = "your_mailslurp_api_key_here";

    // set a timeout as fetching emails might take time
    private static final Long TIMEOUT_MILLIS = 30000L;
    private static final String WEBDRIVER_PATH = "/path/to/your/webdriver";

    private static ApiClient mailslurpClient;
    private static WebDriver driver;

    @BeforeClass
    public static void beforeAll() {
        // setup mailslurp
        mailslurpClient = com.mailslurp.client.Configuration.getDefaultApiClient();
        mailslurpClient.setApiKey(YOUR_API_KEY);
        mailslurpClient.setConnectTimeout(TIMEOUT_MILLIS.intValue());

        // setup webdriver
        System.setProperty("webdriver.gecko.driver", WEBDRIVER_PATH);
        driver = new FirefoxDriver();
        driver.manage().timeouts().implicitlyWait(TIMEOUT_MILLIS, TimeUnit.MILLISECONDS);
    }
}

Тест

Теперь мы можем написать некоторые тесты.

Загрузите приложение

Давайте загрузим приложение и утверждаем, что название, как мы ожидаем.

private static final String PLAYGROUND_URL = "https://playground.mailslurp.com";

@Test
public void test1_canLoadAuthenticationPlayground() {
    driver.get(PLAYGROUND_URL);
    assertEquals(driver.getTitle(), "React App");
}

Чтобы запустить тестовый запуск MVN установить тест . Результат выглядит так:

Начните зарегистрироваться

Теперь давайте нажимаем кнопку регистрации и загрузите страницу регистрации.

@Test
public void test2_canClickSignUpButton() {
    driver.findElement(By.cssSelector("[data-test=sign-in-create-account-link]")).click();
}

Создайте адрес электронной почты

Далее мы создадим новый адрес электронной почты с помощью клиента MailSlurp.

private static Inbox inbox;

 @Test
public void test3_canCreateEmailAddressAndSignUp() throws ApiException {
    // create a real, randomized email address with MailSlurp to represent a user
    InboxControllerApi inboxControllerApi = new InboxControllerApi(mailslurpClient);
    inbox = inboxControllerApi.createInbox(null,null,null,null, null, null);

    // check the inbox was created
    assertNotNull(inbox.getId());
    assertTrue(inbox.getEmailAddress().contains("@mailslurp.com"));

    // fill the playground app's sign-up form with the MailSlurp
    // email address and a random password
    driver.findElement(By.name("email")).sendKeys(inbox.getEmailAddress());
    driver.findElement(By.name("password")).sendKeys(TEST_PASSWORD);

    // submit the form to trigger the playground's email confirmation process
    // we will need to receive the confirmation email and extract a code
    driver.findElement(By.cssSelector("[data-test=sign-up-create-account-button]")).click();
}

Результат должен выглядеть так:

Получите подтверждение по электронной почте

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

private static Email email;

@Test
public void test4_canReceiveConfirmationEmail() throws ApiException {
    // receive a verification email from playground using mailslurp
    WaitForControllerApi waitForControllerApi = new WaitForControllerApi(mailslurpClient);
    email = waitForControllerApi.waitForLatestEmail(inbox.getId(), TIMEOUT_MILLIS, UNREAD_ONLY);

    // verify the contents
    assertTrue(email.getSubject().contains("Please confirm your email address"));
}

Затем мы можем извлечь код подтверждения из тела электронной почты с помощью шаблона regex:

private static String confirmationCode;

@Test
public void test5_canExtractConfirmationCodeFromEmail() {
    // create a regex for matching the code we expect in the email body
    Pattern p = Pattern.compile(".*verification code is (\\d+).*");
    Matcher matcher = p.matcher(email.getBody());

    // find first occurrence and extract
    assertTrue(matcher.find());
    confirmationCode = matcher.group(1);

    assertTrue(confirmationCode.length() == 6);
}

Подтвердите пользователя и вход в систему

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

/**
 * Submit the confirmation code to the playground to confirm the user
 */
@Test
public void test6_canSubmitVerificationCodeToPlayground() {
    driver.findElement(By.name("code")).sendKeys(confirmationCode);
    driver.findElement(By.cssSelector("[data-test=confirm-sign-up-confirm-button]")).click();
}
/**
 * Test sign-in as confirmed user
 */
@Test
public void test7_canLoginWithConfirmedUser() {
    // load the main playground login page
    driver.get(PLAYGROUND_URL);

    // login with now confirmed email address
    driver.findElement(By.name("username")).sendKeys(inbox.getEmailAddress());
    driver.findElement(By.name("password")).sendKeys(TEST_PASSWORD);
    driver.findElement(By.cssSelector("[data-test=sign-in-sign-in-button]")).click();

    // verify that user can see authenticated content
    assertTrue(driver.findElement(By.tagName("h1")).getText().contains("Welcome"));
}

/**
 * After tests close selenium
 */
@AfterClass
public static void afterAll() {
    driver.close();
}

Следующие шаги

В этой статье показано, как проверить процессы, связанные с электронной почтой, такие как регистрация пользователей в Selenium с Java и MailSlurp. В этом тесте мы использовали их для создания новой учетной записи электронной почты с уникальным адресом электронной почты. Затем мы использовали адрес электронной почты для регистрации пользователя и получения кода подтверждения.

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

Оригинал: «https://dev.to/mailslurp/testing-sign-up-with-real-emails-selenium-java-email-api-tutorial-with-examples-1da6»