В тестах на Protractor console.log служит одним из
простейших инструментов для отладки и мониторинга выполнения сценариев.
Он позволяет выводить промежуточные данные, результаты проверок и
состояния элементов в консоль во время запуска тестов. Несмотря на то,
что в профессиональных проектах часто используют логгеры и отчётные
фреймворки, console.log остаётся незаменимым средством при
быстром анализе поведения тестов.
console.logВ Protractor, как и в обычном JavaScript, console.log
используется для вывода значений любых переменных, объектов и сообщений.
Например:
it('Проверка заголовка страницы', async () => {
await browser.get('https://example.com');
const title = await browser.getTitle();
console.log('Текущий заголовок страницы:', title);
expect(title).toEqual('Example Domain');
});
Ключевой момент — большинство методов Protractor возвращают
Promise, поэтому для корректного вывода значений необходимо
использовать await или методы .then(). Без
этого console.log может вывести объект Promise вместо
ожидаемого значения.
console.log для отладки элементовПри работе с веб-элементами важно понимать, что объект
ElementFinder не содержит сразу текст или атрибуты. Для их
получения требуется вызвать соответствующие методы:
it('Проверка текста кнопки', async () => {
const button = element(by.id('submit'));
const buttonText = await button.getText();
console.log('Текст кнопки:', buttonText);
});
Если попытаться вывести объект элемента напрямую:
console.log(button);
В консоли будет отображён объект ElementFinder, а не
текст кнопки. Это один из частых источников путаницы при отладке.
Для проверки атрибутов, видимости или состояния чекбоксов удобно
использовать console.log:
it('Проверка атрибутов и состояния элемента', async () => {
const checkbox = element(by.css('input[type="checkbox"]'));
const isSelected = await checkbox.isSelected();
const idAttr = await checkbox.getAttribute('id');
console.log('ID чекбокса:', idAttr);
console.log('Выбран ли чекбокс:', isSelected);
});
Такой подход позволяет убедиться, что элементы корректно находятся и их состояние соответствует ожиданиям.
При длинных сценариях с несколькими действиями полезно добавлять
промежуточные console.log:
it('Сценарий оформления заказа', async () => {
await browser.get('https://shop.example.com');
console.log('Открыта страница магазина');
const product = element(by.css('.product-item'));
await product.click();
console.log('Выбран первый товар');
const addToCartButton = element(by.buttonText('Добавить в корзину'));
await addToCartButton.click();
console.log('Товар добавлен в корзину');
const cartCount = await element(by.id('cart-count')).getText();
console.log('Количество товаров в корзине:', cartCount);
});
Пошаговое логирование помогает быстро понять, на каком шаге тест упал, особенно когда возникают ошибки асинхронного характера или элементы не успевают появляться на странице.
Иногда необходимо проверять несколько элементов одновременно.
console.log удобно использовать для вывода результатов
работы циклов:
it('Вывод списка ссылок', async () => {
const links = element.all(by.css('a'));
const linkTexts = await links.map(async (link) => await link.getText());
for (let i = 0; i < linkTexts.length; i++) {
console.log(`Ссылка ${i + 1}:`, linkTexts[i]);
}
});
Важно помнить, что методы element.all возвращают массив
промисов, поэтому прямой вывод без await или
map не даст читаемого результата.
console.logawait при асинхронных
действиях: без этого вывод будет Promise, а не фактическое
значение.console.log(value) сложно интерпретировать при больших
сценариях. Формат console.log('Описание:', value) улучшает
читаемость.console.log с ожиданиямиЧасто полезно выводить результат ожиданий, особенно при динамическом контенте:
it('Проверка динамического текста', async () => {
const message = element(by.id('dynamic-message'));
await browser.wait(ExpectedConditions.visibilityOf(message), 5000);
const text = await message.getText();
console.log('Динамическое сообщение:', text);
expect(text).toContain('Успех');
});
Такой подход позволяет убедиться, что ожидания работают корректно и элемент действительно появился перед проверкой.
Использование console.log в тестах Protractor — это
простой, но мощный способ контролировать процесс тестирования. Он
помогает отлаживать асинхронные действия, проверять состояния элементов,
отслеживать поток выполнения сценариев и анализировать промежуточные
значения. В комбинации с правильными ожиданиями и структурированными
тестами console.log обеспечивает быструю диагностику
проблем и повышает надёжность автоматизации.