Playwright предоставляет мощные инструменты для автоматизации браузеров, и взаимодействие с консолью браузера является важной частью процесса тестирования. Консоль браузера может содержать множество полезной информации: ошибки JavaScript, предупреждения, сообщения о сетевых запросах и другие события. Важным аспектом является возможность работы с этими сообщениями в процессе тестирования.
Для начала нужно понять, как Playwright взаимодействует с консолью браузера. Консоль браузера в Playwright это интерфейс для записи и получения сообщений, которые генерируются на веб-странице в процессе выполнения JavaScript.
В Playwright можно слушать события консоли с помощью метода
page.on('console'). Этот метод позволяет регистрировать
обработчик событий, который будет срабатывать каждый раз, когда на
странице появляется сообщение в консоли.
Пример базового использования:
const { webkit } = require('playwright');
(async () => {
const browser = await webkit.launch();
const page = await browser.newPage();
// Регистрация обработчика событий консоли
page.on('console', (msg) => {
console.log(`Консольное сообщение: ${msg.text()}`);
});
await page.goto('https://example.com');
await browser.close();
})();
В этом примере вся информация, которая появляется в консоли страницы, будет выведена в консоль терминала.
В консоли браузера могут быть различные типы сообщений. Playwright
предоставляет доступ к этим сообщениям через объект msg,
который передается в обработчик события. Каждый объект сообщения имеет
метод type(), который позволяет получить тип сообщения.
Типы сообщений, которые могут быть выведены в консоль:
console.log).console.info).console.warn).console.error).console.debug).Пример обработки различных типов сообщений:
page.on('console', (msg) => {
switch (msg.type()) {
case 'log':
console.log(`Обычное сообщение: ${msg.text()}`);
break;
case 'warn':
console.warn(`Предупреждение: ${msg.text()}`);
break;
case 'error':
console.error(`Ошибка: ${msg.text()}`);
break;
default:
console.log(`Тип сообщения: ${msg.type()}, Текст: ${msg.text()}`);
}
});
Кроме текста сообщения, объект msg предоставляет доступ
к другим полезным данным. Например, можно получить:
args() — аргументы, которые были переданы в
консольное сообщение. Это массив объектов, представляющих аргументы,
переданные в функцию консольного вывода (например, для
console.log(a, b) будет возвращен массив, содержащий
объекты, представляющие a и b).
Пример:
page.on('console', (msg) => {
const args = msg.args();
args.forEach((arg, index) => {
console.log(`Аргумент ${index}: ${arg}`);
});
});location() — местоположение (файл, строка и столбец), где было вызвано консольное сообщение.
Пример:
page.on('console', (msg) => {
const location = msg.location();
console.log(`Сообщение вызвано в файле: ${location.url}, строка: ${location.lineNumber}`);
});Иногда нужно не просто прослушивать консольные сообщения, но и управлять их выводом. Например, в некоторых случаях необходимо скрывать определенные типы сообщений или фильтровать их.
Для этого можно использовать опцию фильтрации сообщений по типу, например, игнорировать предупреждения или ошибки.
Пример фильтрации сообщений:
page.on('console', (msg) => {
if (msg.type() !== 'warn') {
console.log(`Сообщение: ${msg.text()}`);
}
});
Использование консольных сообщений может быть полезно для тестирования. Например, можно проверять, что на странице нет ошибок JavaScript после выполнения определенных действий.
Пример:
const { chromium } = require('playwright');
(async () => {
const browser = await chromium.launch();
const page = await browser.newPage();
// Обработчик консоли для ловли ошибок
page.on('console', (msg) => {
if (msg.type() === 'error') {
throw new Error(`Ошибка в консоли: ${msg.text()}`);
}
});
await page.goto('https://example.com');
// Выполнение действий на странице, которые могут вызвать ошибку
await page.click('#nonexistent-button'); // Пример вызова ошибки
await browser.close();
})();
В этом примере при возникновении ошибки в консоли тест немедленно
завершится с ошибкой, если на странице появится сообщение типа
error.
Работа с консолью в Playwright представляет собой мощный инструмент для тестирования и отладки веб-страниц. Он позволяет не только слушать сообщения, но и извлекать полезную информацию, управлять логированием и фильтровать выводимые сообщения. Это позволяет интегрировать проверку консольных сообщений в автоматизированные тесты и гарантировать, что приложение не генерирует нежелательные ошибки и предупреждения в процессе работы.