Puppeteer: автоматизация браузеров Chrome и Firefox для тестирования
Puppeteer — это библиотека на JavaScript, которая позволяет управлять браузерами Chrome и Firefox через DevTools Protocol или WebDriver BiDi.
Этот инструмент упрощает задачи автоматизации — от тестирования веб-приложений до генерации скриншотов и PDF. В отличие от более традиционных решений, Puppeteer работает по умолчанию в безголовом режиме, что делает его быстрым и легковесным для CI/CD-процессов. Он будет полезен разработчикам, которым необходимо интегрировать автоматизацию браузера в свои проекты.
Установить Puppeteer можно с помощью npm, где при установке автоматически загружается совместимая версия Chrome: npm i puppeteer. Если нужно использовать библиотеку без браузера, можно установить puppeteer-core. Учти, что современные менеджеры пакетов могут блокировать скрипты установки, что приведет к ошибкам на этапе выполнения. В таком случае нужно либо вручную скачать необходимые браузеры, либо настроить разрешения в package.json.
Проблемы с совместимостью на уровне платформ не отмечены, но стоит учитывать, что Puppeteer лучше работает с последними версиями браузеров.
Puppeteer — это библиотека на JavaScript, которая предоставляет высокоуровневый API для управления браузерами Chrome или Firefox через протокол DevTools или WebDriver BiDi. По умолчанию Puppeteer работает в безголовом режиме, то есть без графического интерфейса.
Установка
Для установки Puppeteer можно использовать npm или Yarn. При установке Puppeteer автоматически загружает совместимую версию браузера Chrome:
npm i puppeteer
Если ты предпочитаешь установить только библиотеку без загрузки браузера, используй следующую команду:
npm i puppeteer-core
Стоит отметить, что современные пакетные менеджеры по умолчанию блокируют выполнение скриптов установки зависимостей. Если это произойдет, Puppeteer не сможет скачать браузер, что приведёт к ошибкам во время выполнения.
Для того чтобы вручную скачать необходимые браузеры после установки, можно выполнить команду:
npx puppeteer browsers install
Либо можно настроить пакетный менеджер так, чтобы разрешить выполнение скрипта установки.
Пример использования
Вот простой пример использования Puppeteer для запуска браузера, навигации по веб-странице и выполнения действий:
import puppeteer from 'puppeteer';
// Или import puppeteer from 'puppeteer-core';
// Запуск браузера и создание новой страницы.
const browser = await puppeteer.launch();
const page = await browser.newPage();
// Переход на нужный URL.
await page.goto('https://developer.chrome.com/');
// Установка размера окна.
await page.setViewport({width: 1080, height: 1024});
// Открытие меню поиска с помощью клавиатуры.
await page.keyboard.press('/');
// Ввод текста в поисковую строку по доступному имени.
await page.locator('::-p-aria(Search)').fill('automate beyond recorder');
// Ожидание и клик на первом результате.
await page.locator('.devsite-result-item-link').click();
// Нахождение полного заголовка с уникальной строкой.
const textSelector = await page
.locator('::-p-text(Customize and automate)')
.waitHandle();
const fullTitle = await textSelector?.evaluate(el => el.textContent);
// Вывод полного заголовка.
console.log('The title of this blog post is "%s".', fullTitle);
await browser.close();
Дополнительные возможности
Puppeteer также поддерживает установку сервера MCP на основе Puppeteer для автоматизации браузера и отладки. Кроме того, существует экспериментальный WebMCP API, который можно использовать для более продвинутых сценариев.
Ограничения
Важно помнить, что некоторые функции Puppeteer зависят от возможности выполнения скриптов при установке. При их блокировке работа с библиотекой может быть нарушена, поэтому следует следить за настройками пакетного менеджера.
Открыть на GitHub: puppeteer/puppeteer →
RepoRadar