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 — это основа для построения надежных, детализированных и предсказуемых тестов. Внимательное использование методов для извлечения данных и проверки состояния интерфейса позволяет создавать качественные автоматизированные сценарии.