Введение

При автоматизированном тестировании пользовательского веб-интерфейса основной проблемой тестировщиков являются высокие затраты на обслуживание тестовых сценариев, которые обычно вызваны нестабильными и неисправными локаторами. Локатор — это механизм, используемый Selenium для идентификации элемента во время выполнения теста. Популярным механизмом поиска является XPath. К сожалению, локаторы легко ломаются или не могут идентифицировать целевой элемент при изменении тестируемого приложения (AUT). Существующее исследование показало, что на локаторы приходится более 70% поломок в сценариях тестирования веб-интерфейса.

Следовательно, создание и использование правильных и устойчивых локаторов имеет решающее значение для успеха автоматизации тестирования веб-интерфейса.

В этой статье мы описываем совершенно новый и интеллектуальный метод, представленный в Katalon Studio, для автоматического создания надежных локаторов на этапе тестовой записи. Этот продвинутый метод создает новые локаторы, которые более удобны в сопровождении и менее уязвимы к изменениям в AUT, чем Selenium и другие инструменты автоматизации тестирования.

Узнайте больше о Katalon Studio — бесплатном сервисе, который упрощает тестирование API, Интернета и мобильной автоматизации!

Случаи, когда общие локаторы неадекватны

Давайте посмотрим на ted.com, веб-сайт, созданный с использованием фреймворка EmberJS. На снимке экрана ниже показаны карточки веб-сайта, каждая из которых содержит разные элементы (текст, изображение, ссылку и т. д.).

Предположим, вы хотите записать простое действие по нажатию на миниатюру видео с надписью «Как ИИ может спасти человечество», например, вы получите следующие XPath, сгенерированные Selenium:

Хотя эти XPath могут найти элемент, они слишком длинные и сложные. Но главная проблема в том, что их легко сломать, так как они работают только в том случае, если содержимое не изменено. TED — это быстрорастущий веб-сайт, на котором каждый день появляются новые материалы. Поэтому неудивительно, что первое видео сегодня может стать третьим видео завтра. Если вы посмотрите на эти XPath или только на последние 3 символа, вы заметите, что они полностью основаны на предположении, что порядок видео не изменится. Такое предположение противоречит действительности, как описано. Короче говоря, эти локаторы хрупкие, их трудно читать и поддерживать.

Возьмем другой пример, профиль Microsoft на Linkedin.

Предположим, вы хотите проверить информацию профиля Microsoft и используете Selenium для записи, щелкая каждое из полей для получения XPath, вот что вы получите:

Давайте рассмотрим приведенную выше таблицу построчно. Поле веб-сайта расположено по его идентификатору, что кажется разумным выбором. Теперь вы можете сказать, что, по крайней мере, ваш тестовый пример успешно найдет это поле. Однако позже вы обнаружите, что этого не произойдет, потому что каждый раз, когда вы посещаете эту страницу, идентификатор меняется. Другими словами, этот идентификатор является динамическим. Так что использование ID в качестве локатора в этой ситуации не лучший выбор.

Поле штаб-квартиры расположено относительно кратким XPath. К сожалению, этот локатор идентифицирует пять веб-элементов вместо одного уникального элемента, как ожидалось. (Вы можете проверить это, открыв Chrome и нажав Ctrl + Shift + I, чтобы открыть инструмент проверки и выполнить поиск XPath в документе, как показано ниже).

Результат не удивителен, потому что действительно есть пять веб-элементов с тегом ‹p› в разделе информации о компании. Некоторые механизмы воспроизведения автоматически выбирают первый элемент из этих пяти, а некоторые — нет.

Остальные XPath страдают теми же проблемами, которые мы уже обсуждали на веб-сайте TED.

Neighbor XPath: Адекватная форма XPath для описанных выше ситуаций.

Если элемент не может быть последовательно расположен с использованием его прямых атрибутов, то его идентификация с использованием его более надежных соседей. Это простая, но мощная идея нового метода поиска, представленного в Katalon Studio. Этот метод визуально интуитивно понятен, поскольку он отражает то, как пользователи часто идентифицируют видимый элемент в пользовательском интерфейсе.

XPath (также называемый соседним XPath), сгенерированный этим методом, имеет следующую форму:

Эта форма предполагает, что сосед целевого элемента является надежным и идентифицируется его текстом. Каждый столбец в этой форме поясняется следующим образом:

Вернемся к примеру с TED:

Вот несколько XPath, которые принимают приведенную выше форму, чтобы идентифицировать миниатюру, предшествующую «Как ИИ может спасти наше человечество».

Часть "xpath=(.//*[normalize-space(text())) and normalize-space(.)" исправлена, поэтому мы можем игнорировать ее при обслуживании. Вместо этого мы сосредоточимся на rest, который относится к меткам, отображаемым в пользовательском интерфейсе, и поэтому он удобочитаем.

Первый XPath является наиболее интуитивным, поскольку он согласуется с тем, как пользователи обрабатывают миниатюру и взаимодействуют с ней — меткой, представляющей миниатюру. Этот локатор прост в обслуживании, так как при изменении метки в пользовательском интерфейсе вам просто нужно обновить соответствующий текст в сценарии. Более того, общий шаблон видео часто более стабилен, чем контент (например, YouTube не меняет свои шаблоны годами). Таким образом, связь между целевым элементом и его соседом в составном элементе или карточке сохраняется, несмотря на динамическое упорядочение между элементами.

Для примера профиля Microsoft:

Вот соответствующие соседние XPath:

Опять же, игнорируя фиксированную часть XPath выше, мы видим, что поля профиля Microsoft встроены в XPath. Во время выполнения теста, если поле отсутствует, выполнение останавливается, чтобы указать, что именно не так. Однако в Selenium отображается неправильный элемент сбоя, поскольку порядок изменяется из-за удаления элемента.

Использование Neighbor XPath в Katalon Studio

Конечно, вам не нужно сильно беспокоиться о том, как создавать соседние XPath, как описано выше. Katalon Studio автоматически выполняет эту работу. Соседние XPath создаются во время записи. Katalon Studio пытается выбрать подходящие XPath, но вы все равно можете вручную выбрать наиболее подходящие, как показано ниже.

С помощью настройки стратегии пользовательских локаторов вы можете выбрать стратегию по умолчанию для автоматических путей XPath для всех элементов теста.

Вывод

Мы показали несколько примеров, демонстрирующих, что XPath в Selenium хрупкий и сложный в обслуживании. Распространенной причиной является зависимость Selenium от индекса и порядка элементов.

Несмотря на то, что существует множество других инструментов для автоматического тестирования, в этой статье описывается продвинутый и интеллектуальный метод Katalon Studio для автоматического создания локаторов или соседних XPath в сценариях автоматического тестирования. XPath более устойчивы к изменениям в AUT и удобнее в сопровождении, чем созданные Selenium. Этот расширенный метод доступен в версии 5.7 Katalon Studio. Подробнее о версии 5.7.

ОБНОВЛЕНО: Katalon ver 7.x уже доступен. Нажмите здесь, чтобы загрузить последнюю версию.

Читать далее:

Первоисточник: https://www.katalon.com/resources-center/blog/smart-xpath-generator/