Топ 10 ошибок при работе с Selenium WebDriver (Java)

Дд, всем.

Разбираюсь с Selenium. И возник вопрос о Топ 10 наиболее распространенных ошибок при написании тестов и как их фиксить?

У меня пока список такой:

  1. NullPointerException - не найден элемент. Или эл-т реально отсутствует на странице или к нему не правильно указан доступ.
  2. Element not attached - либо с использованием new Action(), либо добавить wait до загрузки эл-та
  3. org.openqa.selenium.TimeoutException: Timed out after 12 seconds waiting for element to be clickable - превышено время ожидания появления эл-та. Либо что-то не так в сценарии, либо увеличить время для ожидания ответа.
    4-N. Крайне мало

На 1й приходится до 95% от всех ошибок. Остальные - реже.

А какой у вас опыт?

staleElementExeption - ультра страшная вещьь

о, да. И как её решаете?

Селенидом :slight_smile:

А еще страшная вещь, это длинные xpath та и средние и короткие

NullPointerException - не найден элемент. Или эл-т реально отсутствует на странице или к нему не правильно указан доступ. - может NoSuchElementException ?

2 лайка

NullPointerException говорит о неправильно написанном тесте или работы фреймворка. Скорее всего у Вас 1

1 лайк

Это если Exception через try catch делать. Так - java.lang.NullPointerException - все правильно написал.

50/50. Иногда wait нужно больше указать. Иногда xpath может меняться.

Ошибки:

  • использование Thread.sleep() везде где попало;
  • использование длинных и хрупких Xpath локаторов;
  • отваливающиеся тесты при автоматическом обновлении браузера (когда Вебдрайвер еще не поддерживает новую версию браузера);
  • не соблюдение конвенций ЯП на котором пишутся тесты;
  • попытка запускать тесты параллельно, имею при этом статический инстанс драйвера;
  • хардкодинг url (и других данных - например логинов/паролей) прямо в коде тестов;
  • создание God Page Object;
3 лайка

Нет не правильно написали вы… Загугли что это значит

NullPointerException к тестированию и фреймворку не имеет никакого отношения, он говорит о том что ви колаете непроинициализирований обьект.

что правильного ? при чем тут wait i xpath ? WebElement element1; element1.click() - вот виброситься NullPointer, если конечно над element1 нету какой то кастомной анотации которая в рантайме отвечает за его поиск, типа FindBy