Puppeteer — это библиотека для Node.js, которая предоставляет
высокоуровневое API для управления браузером Chromium или Chrome через
протокол DevTools. Одной из важных задач при автоматизации тестирования
является настройка размера окна браузера. В Puppeteer это можно сделать
с помощью параметра viewport, который задает размер области
видимости браузера.
Viewport — это область, в которой отображается веб-страница. В отличие от всей области экрана, которая может содержать и другие элементы, такие как панели инструментов и адресную строку, viewport фокусируется исключительно на части страницы, которую пользователь видит. Установка корректного размера viewport имеет решающее значение, особенно при тестировании адаптивных сайтов, которые меняют свой вид в зависимости от размеров экрана.
Для изменения размера окна в Puppeteer используется метод
page.setViewport(). Этот метод позволяет задать ширину и
высоту окна браузера, а также дополнительно настроить параметры, такие
как DPR (Device Pixel Ratio), которые могут повлиять на визуализацию
контента.
Пример установки стандартного размера viewport:
const puppeteer = require(&
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
// Устанавливаем размер окна
await page.setViewport({
width: 1280,
height: 800
});
await page.goto('https://example.com');
await browser.close();
})();
В этом примере создается новый экземпляр браузера, открывается новая вкладка и устанавливается размер окна 1280x800 пикселей. После этого страница загружается и браузер закрывается.
При установке viewport можно указать дополнительные параметры:
Пример с дополнительными параметрами:
await page.setViewport({
width: 375,
height: 667,
isMobile: true,
hasTouch: true,
deviceScaleFactor: 2
});
В этом примере задается viewport размером 375x667 пикселей, что соответствует типичному размеру экрана мобильного устройства (например, iPhone 6/7/8). Устанавливается также коэффициент устройства для имитации дисплея Retina и активируется поддержка сенсорного ввода.
Puppeteer позволяет точно настроить тестирование для различных типов устройств. Для этого часто используется эмуляция мобильных устройств с помощью заранее подготовленных конфигураций.
Вместо того чтобы вручную устанавливать размеры экрана, можно воспользоваться уже готовыми конфигурациями для популярных устройств.
Пример использования эмуляции мобильного устройства:
const puppeteer = require('puppeteer');
const devices = require('puppeteer/DeviceDescriptors');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
// Эмуляция мобильного устройства iPhone 6
await page.emulate(devices['iPhone 6']);
await page.goto('https://example.com');
await browser.close();
})();
В этом примере используется встроенная библиотека
DeviceDescriptors, которая содержит информацию о
характеристиках различных мобильных устройств. Метод
page.emulate() автоматически применяет параметры, такие как
размер экрана, коэффициент пикселей и особенности устройства.
Для тестирования адаптивных веб-сайтов необходимо проверять, как сайт будет вести себя на разных размерах экранов. Установка viewport помогает точно контролировать условия теста. Выставив различные размеры окна и проверив внешний вид страницы, можно удостовериться, что сайт правильно адаптируется под различные устройства.
Пример тестирования на разных разрешениях экрана:
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
const sizes = [
{ width: 320, height: 480 }, // маленькие экраны (мобильные устройства)
{ width: 768, height: 1024 }, // планшеты
{ width: 1280, height: 1024 }, // стандартные десктопы
{ width: 1920, height: 1080 } // большие экраны (Full HD)
];
for (let size of sizes) {
await page.setViewport(size);
await page.goto('https://example.com');
// Здесь можно добавить проверки визуального отображения
}
await browser.close();
})();
Этот код позволяет прогонять сайт через различные размеры экрана, эмулируя условия работы на мобильных устройствах, планшетах и десктопах.
При установке viewport необходимо учитывать, что изменения размера экрана могут повлиять на производительность тестов. Например, использование очень больших разрешений может потребовать больше ресурсов от системы и увеличить время выполнения теста. Поэтому важно подбирать оптимальные параметры для каждого случая, учитывая баланс между точностью теста и временем выполнения.
Установка правильного размера viewport является важной частью
тестирования с использованием Puppeteer, особенно при проверке
адаптивных сайтов. С помощью метода setViewport() можно
эмулировать различные устройства и тестировать поведение сайта в
различных условиях. Важно учитывать параметры, такие как коэффициент
пикселей и наличие сенсорного экрана, чтобы тесты максимально точно
отражали работу веб-приложений на реальных устройствах.