Получение результатов выполнения

WebdriverIO предоставляет мощные инструменты для получения и обработки результатов выполнения тестов. Основная цель — извлечь данные о состоянии элементов, значениях, текстах и атрибутах страницы после взаимодействия с веб-приложением. В этом разделе рассматриваются подходы к получению информации, работа с промисами, асинхронными функциями и удобные методы для проверки состояния интерфейса.


Асинхронность и ожидание результатов

WebdriverIO построен на асинхронной модели взаимодействия с браузером. Все действия с элементами возвращают промисы, поэтому работа с результатами всегда требует использования await или обработки промисов через .then().

Пример получения текста элемента:

const element = await $('#username');
const text = await element.getText();
console.log(text);

Метод getText() возвращает строку, содержащую видимый текст элемента. Важно помнить, что WebdriverIO автоматически ожидает элемент в DOM с помощью встроенного ожидания, но если элемент появляется динамически, можно использовать явное ожидание:

await element.waitForDisplayed({ timeout: 5000 });
const text = await element.getText();

waitForDisplayed гарантирует, что текст будет получен только после появления элемента на странице.


Получение атрибутов и свойств элементов

Для проверки состояния интерфейса часто необходимо получить значения атрибутов или свойств элементов.

const checkbox = await $('#accept-terms');
const isChecked = await checkbox.isSelected();
const idValue = await checkbox.getAttribute('id');
const classValue = await checkbox.getCSSProperty('display');
  • isSelected() возвращает true или false для чекбоксов и радиокнопок.
  • getAttribute(name) извлекает значение атрибута HTML.
  • getCSSProperty(propertyName) позволяет получить текущие CSS-свойства элемента, включая вычисленные значения.

Эти методы используются для проверки состояния элементов до и после действий пользователя, например, изменения видимости, цвета или активности кнопки.


Получение значений полей и ввода

Для тестирования форм критично извлекать значения полей ввода:

const input = await $('#email');
const value = await input.getValue();
console.log(value);

Метод getValue() возвращает текущее содержимое поля, независимо от того, было оно установлено пользователем или программно.

Для выпадающих списков и переключателей можно использовать:

const select = await $('#country');
const selectedOption = await select.getValue();

Работа с коллекциями элементов

Когда на странице несколько одинаковых элементов, важно уметь извлекать информацию из коллекций:

const items = await $$('.product-item');
for (const item of items) {
    const name = await item.$('.product-name').getText();
    console.log(name);
}
  • $$ возвращает массив элементов, который можно перебирать в цикле.
  • Для каждого элемента можно использовать методы получения текста, атрибутов или состояния.

Получение результатов после действий пользователя

WebdriverIO позволяет сразу проверять эффект действий, например, клика или отправки формы:

const button = await $('#submit');
await button.click();

const successMessage = await $('#success').getText();
if (successMessage === 'Успешно отправлено') {
    console.log('Форма отправлена корректно');
}

Сочетание действий и получения результатов позволяет строить надежные проверки, отражающие реальное поведение пользователя.


Логирование и диагностика

Для анализа тестов часто используют логирование значений на каждом шаге:

const price = await $('#total-price').getText();
console.log(`Текущая цена: ${price}`);

WebdriverIO также предоставляет встроенные средства логирования состояния браузера, которые можно использовать для отладки, например browser.getTitle() или browser.getUrl():

const title = await browser.getTitle();
const url = await browser.getUrl();
console.log(`Страница: ${title}, URL: ${url}`);

Использование матчеров и ожиданий

Для проверки результатов выполнения удобно комбинировать получение данных с матчерами:

const message = await $('#alert').getText();
await expect(message).toHaveText('Операция выполнена успешно');

Методы toHaveText, toBeDisplayed, toHaveValue позволяют не только получить результат, но и проверить его соответствие ожиданиям, обеспечивая лаконичность тестов.


Итоговые рекомендации по получению результатов

  • Всегда использовать await при получении текста, атрибутов и значений.
  • Для динамических элементов применять методы waitForDisplayed, waitForEnabled, waitUntil.
  • При работе с коллекциями использовать $$ и итерировать каждый элемент для получения детальной информации.
  • Комбинировать получение результатов с матчерами для упрощения проверки.
  • Логировать критические значения для диагностики тестов и анализа причин падений.

Получение результатов выполнения в WebdriverIO — это основа для построения надежных, детализированных и предсказуемых тестов. Внимательное использование методов для извлечения данных и проверки состояния интерфейса позволяет создавать качественные автоматизированные сценарии.