Как я заавтотестил переписку между юзерами через WebDriver на Java

В этой записи хочу написать о том, как я заавтотестил переписку. Хочу только отметить какое какие моменты. Автотесты я пишу в стиле DSL, которому научился благодаря курсам Алексея Баранцева, а именно Программирование для тестировщиков

Коротко говоря, у меня два пакета с тестами, в одном пакете чисто хелперы, в которые запихана реализация методов, в другом пакете чисто тесты состоявшие из этих методов. Тесты пишу на java.

К примеру мой тест по авторизации выглядит следующем образом:

public void autorazationMambaLogin() throws Exception {
app.getAuthorizationHelper().openMambaUrl();
app.getAuthorizationHelper().loginMamba(«логин», «пассворд», «id анкеты»);
app.getAuthorizationHelper().logOut();
}

Правда красиво? Не буду писать как тест выглядел раньше :-) Ну вообщем все мои автотесты выглядят примерно таким образом, вся реализация в хелперах, все тесты состоят исключительно из человеко читаемых методах, берущихся из хелперов. И еще, я считаю, что автотесты не должны покрывать длинные кейсы, они должны быть  короткими и быть по сути smoke-тестами.

Так вот , тестовый сайт mamba.ru

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

И написать ему сообщения через анкету:

Либо зайдя в сообщения на своем профайле и перейдя в папку, где находится ваш контакт:

И при первом и при втором варианте, при нажатии «Написать» открывается окно месседжера, куда мы пишем сообщение и нажимаем «Отправить»:

 

В итоге наше отправленное сообщение должно отразиться в окне переписки

И должно отразиться в окне переписки юзера, кому мы отправили сообщение:

Вот и небольшой текст кейс, который я должен заавтотестить.

Разъясню несколько методов которые я использую.

В классе HelperWithWebDriverBase:

 

метод, который переключается по окнам

public void switchToWindow(int number){
driver.switchTo().window((String) driver.getWindowHandles().toArray()[number]);
}

 

метод закрывающий окно

public void closeWindow(int number){
driver.switchTo().window((String) driver.getWindowHandles().toArray()[number]).close();
}

 

метод проверяющий что на странице присутствует нужный мне текст

public void verifyText(String text){
assertTrue(findElement(By.tagName(«body»)).getText().contains(text));
}

 

Метод, который генерит рандомный текст с параметром количества символов :

public String genString(int Length) {
String[] lettersName = {«А»,»Б»,»В»,»Г»,»Д»,»Е»,»Ё»

,»Ж»,»З»,»И»,»Й»,»К»,

«Л»,»М»,»Н»,»О»,»П»,»Р»,»С»,»Т»,

«У»,»Ф»,»Х»,»Ц»,»Ч»,»Ш»,»Щ»,»Ъ»,»Ы»,»Ь»,»Э»,»Ю»,»Я»};
Random rnd = new Random();
StringBuilder sb = new StringBuilder(Length);
for( int i = 0; i < Length; i++ ) sb.append(lettersName[rnd.nextInt(lettersName.length)]);
return sb.toString();
}

Про этот метод мне наш разработчик ответил вот что :

«давай по словарю генерь а не бред  и самообучался чтоб на ответах»

Но я пока не готов. :-)

 

В классе MessagesHelper:

Метод, который вводит текст в окно месседжера

public void eneterTextToMessager(String messageText){
findElement(By.name(«message»)).sendKeys(messageText);
}

 

Вообщем самые важные методы разъяснил, теперь можно составлять наш конструктор, тобишь наш тест:

/*Переписка в мессенджере.*/
@Test
public void testVerifyWriteMessage() throws Exception {
app.getAuthorizationHelper().openMambaUrl(); // открываю сайт
app.getAuthorizationHelper().loginMamba(«анкета1», «пароль», «id1»); //логинюсь анкетой номер1
app.getMessagesHelper().clickFavouritesFolder(); //кликаю по папке «Избранные» , в которой находится наш контакт
app.getMessagesHelper().clickWriteMessageToMessage();// кликаю на «Написать» около нужного нам контакта Анкета2
app.getHelperWithWebDriverBase().switchToWindow(1); // переключаюсь на окно открывшегося месседжера
String testMessage = app.getHelperWithWebDriverBase().genString(11); // генерю текстовое сообщение из 11 символов
app.getMessagesHelper().eneterTextToMessager(testMessage); //Ввожу сгенеренное сообщение
app.getMessagesHelper().clickSendMessage(); //нажимаем «Отправить»

app.getHelperWithWebDriverBase().verifyText(testMessage); //Проверяю что отправленное сообщение присутствует в месседжере
app.getHelperWithWebDriverBase().closeWindow(1); //закрываю месседжер
app.getHelperWithWebDriverBase().switchToWindow(0); //переключаюсь на вкладку с профайлом
app.getAuthorizationHelper().logOut(); //выхожу из профайла

app.getAuthorizationHelper().loginMamba(«анкета2», «пассворд», «id2»); //логинюсь анкетой номер2
app.getMessagesHelper().clickOnMessageOnAnketa(); //кликаю по папке «Избранные» , в которой находится написавшая нам анкета1
app.getMessagesHelper().clickWriteMessageToTest(); // кликаю на «Написать» около нужного нам контакта Анкета1
app.getHelperWithWebDriverBase().switchToWindow(1); //переключаюсь на открывшееся окно месседжера
app.getHelperWithWebDriverBase().verifyText(testMessage); //подтверждаю присутствие полученного сгенеренного нами ранее текста
app.getHelperWithWebDriverBase().closeWindow(1); // закрываю окно месседжера
app.getHelperWithWebDriverBase().switchToWindow(0); // переключаюсь обратно на вкладку с профайлом
app.getAuthorizationHelper().logOut();  //делаю выход
}

Все, тест готов, а как реализовывайте автоматизацию переписки вы на своих проектах?

Понравилась статья? Поделиться с друзьями:
Комментарии: 3
  1. Игорь

    Здравствуйте! Можете показать как вы реализовали метод открытия и закрытия браузера?

    1. Олег (автор)

      Сам браузер, читаю из конфиг файла:
      @BeforeMethod
      @Parameters({ «configFile» })
      public void setUp(org.testng.ITestContext ctx, @Optional String configFile) throws Exception {

      if (configFile == null) {
      configFile = System.getProperty(«configFile»);
      }
      if (configFile == null) {
      configFile = System.getenv(«configFile»);
      }
      if (configFile == null) {
      configFile = «application.properties»;
      }
      Properties props = new Properties();
      props.load(new FileReader(configFile));

      app.set(new ApplicationManager().getApplicationManager());
      getManager().setProperties(props);
      ctx.setAttribute(«application», app);
      }

      Закрытие браузера:

      @AfterMethod
      public void tearDown() throws Exception {
      getManager().stop();
      }

      public ApplicationManager getManager() {
      if (app.get() == null) {
      app.set(new ApplicationManager().getApplicationManager());
      }

      return app.get();
      }

  2. Игорь

    Огромное спасибо!

Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.