Селен — это мощная структура тестирования браузера. Эта статья покажет вам, как использовать реальные адреса электронной почты в тестах 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»