Введение в пользовательские и расширенные мобильные команды в WebdriverIO
Тестирование мобильных приложений и мобильных веб-приложений имеет свои собственные проблемы, особенно когда речь идет о специфических различиях между платформами Android и iOS. Хотя Appium предоставляет гибкость для работы с этими различиями, часто требуется глубокое погружение в сложную, зависящую от платформы документацию (Android, iOS) и команды. Это может сделать написание тестовых скриптов более трудоемким, подверженным ошибкам и сложным для поддержки.
Чтобы упростить этот процесс, WebdriverIO представляет пользовательские и расширенные мобильные команды, специально разработанные для тестирования мобильных веб-приложений и нативных приложений. Эти команды абстрагируют сложности базовых API Appium, позволяя писать лаконичные, интуитивно понятные и независимые от платформы тестовые скрипты. Сосредоточившись на простоте использования, мы стремимся уменьшить дополнительную нагрузку при разработке скриптов Appium и дать вам возможность без усилий автоматизировать мобильные приложения.
Почему пользовательские мобильные команды?
1. Упрощение сложных API
Некоторые команды Appium, такие как жесты или взаимодействия с элементами, требуют подробного и сложного синтаксиса. Например, выполнение действия долгого нажатия с использованием нативного API Appium требует ручного построения цепочки action:
const element = $('~Contacts')
await browser
.action( 'pointer', { parameters: { pointerType: 'touch' } })
.move({ origin: element })
.down()
.pause(1500)
.up()
.perform()
С пользовательскими командами WebdriverIO то же самое действие можно выполнить с помощью одной выразительной строки кода:
await $('~Contacts').longPress();
Это значительно уменьшает шаблонный код, делая ваши скрипты чище и понятнее.
2. Кросс-платформенная абстракция
Мобильные приложения часто требуют специфической обработки для разных платформ. Например, прокрутка в нативных приложениях значительно отличается между Android и iOS. WebdriverIO решает эту проблему, предоставляя унифицированные команды, такие как scrollIntoView(), которые бесшовно работают на всех платформах, независимо от базовой реализации.
await $('~element').scrollIntoView();
Такая абстракция обеспечивает переносимость ваших тестов и не требует постоянного ветвления или условной логики для учета различий между операционными системами.
3. Повышенная продуктивность
Снижая необходимость понимать и внедрять низкоуровневые команды Appium, мобильные команды WebdriverIO позволяют сосредоточиться на тестировании функциональности вашего приложения, а не на борьбе с особенностями платформ. Это особенно полезно для команд с ограниченным опытом в мобильной автоматизации или тех, кто стремится ускорить цикл разработки.
4. Согласованность и удобство обслуживания
Пользовательские команды обеспечивают единообразие в ваших тестовых скриптах. Вместо различных реализаций для аналогичных действий, ваша команда может опираться на стандартизированные, многократно используемые команды. Это не только делает кодовую базу более обслуживаемой, но и снижает барьер для адаптации новых членов команды.
Почему улучшать определенные мобильные команды?
1. Добавление гибкости
Некоторые мобильные команды улучшены для предоставления дополнительных опций и параметров, которые недоступны в стандартных API Appium. Например, WebdriverIO добавляет логику повторных попыток, таймауты и возможность фильтровать вебвью по определенным критериям, обеспечивая больший контроль в сложных сценариях.
// Пример: Настройка интервалов повторных попыток и таймаутов для обнаружения вебвью
await driver.getContexts({
returnDetailedContexts: true,
androidWebviewConnectionRetryTime: 1000, // Повторять каждую секунду
androidWebviewConnectTimeout: 10000, // Таймаут через 10 секунд
});
Эти опции помогают адаптировать скрипты автоматизации к динамическому поведению приложения без дополнительного шаблонного кода.
2. Улучшение удобства использования
Расширенные команды абстрагируют сложности и повторяющиеся шаблоны, встречающиеся в нативных API. Они позволяют выполнять больше действий с меньшим количеством строк кода, уменьшая кривую обучения для новых пользователей и делая скрипты более читаемыми и удобными в обслуживании.
// Пример: Расширенная команда для переключения контекста по заголовку
await driver.switchContext({
title: 'My Webview Title',
});
По сравнению со стандартными методами Appium, расширенные команды устраняют необходимость в дополнительных шагах, таких как ручное получение доступных контекстов и их фильтрация.