Для того чтобы начать работу с Playwright, первым шагом является запуск браузера. В Playwright поддерживаются несколько браузеров: Chromium, Firefox и WebKit. Playwright предоставляет удобные API для управления браузерами, что позволяет автоматизировать действия пользователя на разных платформах.
Для запуска браузера в Playwright используется метод
chromium.launch(), firefox.launch() или
webkit.launch(). Каждый из этих методов открывает браузер
соответствующего типа. Например, для запуска Chromium используется
следующий код:
const { chromium } = require('playwright');
(async () => {
const browser = await chromium.launch(); // Запуск Chromium
const context = await browser.newContext(); // Создание нового контекста
const page = await context.newPage(); // Открытие новой страницы
await page.goto('https://example.com'); // Переход на сайт
await browser.close(); // Закрытие браузера
})();
Метод launch() позволяет задать несколько опций для
настройки браузера. Например, можно указать, запускать ли браузер в
фоновом режиме (без пользовательского интерфейса), использовать ли
headless-режим и так далее. Один из примеров с параметром
headless:
const browser = await chromium.launch({ headless: false }); // Запуск в обычном режиме
По умолчанию браузер запускается в headless-режиме, что значит, что интерфейс браузера не отображается на экране. Это полезно для выполнения тестов в фоновом режиме или на сервере.
Контекст браузера — это логическое окружение, в рамках которого создаются страницы. Контексты позволяют изолировать состояние, куки, локальное хранилище и другие параметры. Это особенно полезно, когда необходимо провести несколько тестов, имитируя работу разных пользователей.
Контекст создается с помощью метода
browser.newContext(). Каждый контекст может содержать
несколько страниц, и каждая страница в контексте будет изолирована от
других, что позволяет эффективно тестировать различные сценарии.
const context = await browser.newContext();
Если нужно работать с несколькими контекстами (например, для тестирования с различными учетными записями), можно создать несколько контекстов и запускать тесты параллельно.
Контекст можно настроить с помощью различных параметров, таких как пользовательские куки, локальное хранилище и настройка User-Agent. Пример создания контекста с пользовательскими куки:
const context = await browser.newContext({
cookies: [{ name: 'session', value: '12345', domain: 'example.com' }]
});
Кроме того, можно настроить контекст для имитации разных устройств,
что полезно для тестирования мобильных версий веб-сайтов. Для этого
используется метод newContext() с настройками
устройства:
const context = await browser.newContext({
...devices['iPhone 11 Pro'] // Эмулируем мобильное устройство
});
Каждый контекст может содержать несколько страниц, которые создаются
с помощью метода newPage(). Страница в Playwright является
основным объектом для взаимодействия с веб-страницей, и именно через неё
выполняются все действия, такие как переходы по URL, ввод данных в
формы, щелчки по элементам и другие взаимодействия.
const page = await context.newPage();
await page.goto('https://example.com');
Playwright позволяет работать с несколькими контекстами и страницами одновременно. Например, можно запустить несколько браузеров или имитировать несколько пользователей, чтобы протестировать разные сценарии. Каждый контекст может работать независимо от других, что позволяет сохранять отдельное состояние и сессии для каждого пользователя.
Для параллельного выполнения тестов удобно использовать асинхронные функции, что позволяет не блокировать выполнение других тестов. Например:
const context1 = await browser.newContext();
const page1 = await context1.newPage();
await page1.goto('https://example.com');
const context2 = await browser.newContext();
const page2 = await context2.newPage();
await page2.goto('https://example2.com');
Такой подход помогает избежать возможных конфликтов и несоответствий данных между тестами.
Когда работа с браузером и контекстами завершена, важно корректно
закрыть браузер, чтобы освободить ресурсы. Для этого используется метод
browser.close():
await browser.close();
Кроме того, для корректного завершения работы с браузером можно закрыть все страницы и контексты вручную, что также поможет избежать утечек памяти.
Запуск браузера и создание контекста являются основой работы с Playwright. Браузеры могут запускаться как с графическим интерфейсом, так и в headless-режиме, а контексты позволяют изолировать состояние для разных пользователей. Это даёт гибкость и позволяет организовать эффективные тесты, имитируя множество разных сценариев.