Проблема

  • Тесты сильно замараны Wait.For
  • Можно накосячить заиспользовав элемент не дожидаясь его (плохая инкапсуляция)
  • Wait.For внутри Wait.For
  • Wait.For(condition);    Assert.That(condition);
  • Wait.For(conditionA, 10000);  Wait.For(conditionA, 30000);
  • Перед использованием элемента проверяли его на Exist
  • Код ниже x5 VS browser.GoToClientPage(payer);
// TODO: browser.GoToClientPage(payer)
Wait.For(() => browser.GoToPage<ClientPageBase>(ClientPageBase.Uri(payer.Id)).Title == payer.Name, 80000);
// TODO: разобраться, зачем Wait (можно было бы использовать browser.GoToClientPage(payer.Id, PayerName);)
var clientPage = browser.GoToPage<ClientPageBase>(ClientPageBase.Uri(payer.Id));
//     Assert.AreEqual(PayerName, clientPage.Title, "Страница плательщика не загрузилась");

Решение

  • Wait.For(() => element.Visible, 8000); -> element.WaitVisible();
  • Ловим ошибки selenium и обрабатываем их -> больше стабильности тестов
  • Элемент сам пытается себя перевытащить если он не Exist -> в коде меньше мусора с проверками на Exist перед использованием + меньше шанс накосячить при написании теста

По ходу наткнулись

  • selenium коряво чистит input
  • Состояние Enable и Disable у кнопки  определялось по разному, и из-за этого в некоторых тестах были проблемы (в некоторых тестах по факту кликали по задизейбленой кнопке)
  • Была сломан mail service у функ тестов. Несколько тестов падали с непонятной причиной из-за этого.
    Сейчас mail service стартует, а письма складываются в спец папочку артефактов (рядом с папкой screenshots)
  • Не умели скролить и ряд тестов из-за этого могли падать. Починили падающие из-за этого тесты добавив метод ScrollIntoView у элементов.

Вопросы?

Автотесты Wait-For

By deuterium

Автотесты Wait-For

  • 489