19. НАЖАТА «ДОБАВИТЬ В КОРЗИНУ»
Вырезаем и сохраняем изображение кнопки
НАЖАТА «ДОБАВИТЬ В КОРЗИНУ»
Определяем, где сохраненный фрагмент
находится на экране и нажимаем на нее
20. PROS & CONS
‣ Простота написания и
поддержки тестов
‣ Запуск тестов на
всевозможных
окружениях
‣ Быстрое обнаружение
изменений на UI
‣ Долго обучать нейронку
‣ Нужен эталон
‣ Ложные срабатывания
28. PROS & CONS
‣ Динамическое
обновление состояния
‣ Простота написания и
поддержки тестов
‣ ML алгоритм надо учить
‣ Только для новых
тестов
‣ Зависимость от
реализации поиска
элемента
36. Определяет сходства (или различия) между двумя графами
graph edit distance (GED)
Расстояние редактирования между g1 и g2, представляет собой
количество операций редактирования, при которых g1 достигает g2.
37. Преобразование g1 в g2 с помощью операций
замены, вставки, удаления
Deleted a Deleted div
48. СТРАТЕГИЯ
На каждое действие сохраняем состояние DOM
Находим разницу между двумя DOM и предлагаем
вариант нового локатора
NoSuchElementException
49. СТРАТЕГИЯ
На каждое действие сохраняем состояние DOM
Находим разницу между двумя DOM и предлагаем
вариант нового локатора
Сохраняем успешный локатор и предлагаем
использовать его
NoSuchElementException
50. PROS
‣ Хорошо работает при изменении атрибутов
‣ Нет привязки к конкретной экосистеме
‣ Для проектов на любой стадии разработки
51. CONS
‣ Привязка к Selenium
‣ Новые локаторы выглядят устрашающе
‣ Высокое потребление памяти
‣ Пока не стабильно при больших изменениях
DOM с глубокой вложенностью
53. JsonWireProtocol
Response Status Codes
7 NoSuchElement
An element could not be located on the page using the
given search parameters.
POST /session/:sessionId/element
Search for an element on the page,
starting from the document root.
Command Summary
55. LIFEHACK
Обращение к родителю не найденного элемента
работает в ~70% случаев
//*[@id=«react-app»]/div/div[1]/div/div[2]/div/div/div/
div[1]/div/div/button
//*[@id=«react-app»]/div/div[1]/div/div[2]/div/div/div/
div[1]/div/div