Перейти к основному содержимому

Эмуляция

Введение

С помощью Playwright вы можете тестировать свое приложение в любом браузере, а также эмулировать реальное устройство, такое как мобильный телефон или планшет. Просто настройте устройства, которые вы хотите эмулировать, и Playwright будет симулировать поведение браузера, такое как "userAgent", "screenSize", "viewport" и наличие "hasTouch". Вы также можете эмулировать "geolocation", "locale" и "timezone" для всех тестов или для конкретного теста, а также установить "permissions" для отображения уведомлений или изменения "colorScheme".

Устройства

Playwright может эмулировать различные устройства, указывая параметры setDeviceScaleFactor, setHasTouch, setIsMobile, setScreenSize, setUserAgent и setViewportSize при создании контекста с помощью Browser.newContext().

Viewport

Viewport включен в устройство, но вы можете переопределить его для некоторых тестов с помощью Page.setViewportSize().

Тестовый файл:

То же самое работает внутри тестового файла.

// Создать контекст с заданным viewport
BrowserContext context = browser.newContext(new Browser.NewContextOptions()
.setViewportSize(1280, 1024));

// Изменить размер viewport для отдельной страницы
page.setViewportSize(1600, 1200);

// Эмулировать высокое разрешение DPI
BrowserContext context = browser.newContext(new Browser.NewContextOptions()
.setViewportSize(2560, 1440)
.setDeviceScaleFactor(2));

isMobile

Учитывается ли мета-тег viewport и включены ли события касания.

BrowserContext context = browser.newContext(new Browser.NewContextOptions()
.isMobile(false));

Локаль и Часовой пояс

Эмулируйте локаль и часовой пояс пользователя, которые могут быть установлены глобально для всех тестов в конфигурации и затем переопределены для конкретных тестов.

BrowserContext context = browser.newContext(new Browser.NewContextOptions()
.setLocale("de-DE")
.setTimezoneId("Europe/Berlin"));
Bing на немецком языке и в часовом поясе

Разрешения

Разрешите приложению показывать системные уведомления.

BrowserContext context = browser.newContext(new Browser.NewContextOptions()
.setPermissions(Arrays.asList("notifications")));

Разрешите уведомления для конкретного домена.

context.grantPermissions(Arrays.asList("notifications"),
new BrowserContext.GrantPermissionsOptions().setOrigin("https://skype.com"));

Отмените все разрешения с помощью BrowserContext.clearPermissions().

context.clearPermissions();

Геолокация

Предоставьте разрешения "geolocation" и установите геолокацию для конкретной области.

BrowserContext context = browser.newContext(new Browser.NewContextOptions()
.setGeolocation(41.890221, 12.492348)
.setPermissions(Arrays.asList("geolocation")));
геолокация для Италии на картах Bing

Измените местоположение позже:

context.setGeolocation(new Geolocation(48.858455, 2.294474));

Примечание: вы можете изменить геолокацию только для всех страниц в контексте.

Цветовая схема и Медиа

Эмулируйте "colorScheme" пользователя. Поддерживаемые значения: 'light' и 'dark'. Вы также можете эмулировать тип медиа с помощью Page.emulateMedia().

// Создать контекст с темным режимом
BrowserContext context = browser.newContext(new Browser.NewContextOptions()
.setColorScheme(ColorScheme.DARK)); // или "light"

// Создать страницу с темным режимом
Page page = browser.newPage(new Browser.NewPageOptions()
.setColorScheme(ColorScheme.DARK)); // или "light"

// Изменить цветовую схему для страницы
page.emulateMedia(new Page.EmulateMediaOptions().setColorScheme(ColorScheme.DARK));

// Изменить медиа для страницы
page.emulateMedia(new Page.EmulateMediaOptions().setMedia(Media.PRINT));
playwright web в темном режиме

User Agent

User Agent включен в устройство, и поэтому вам редко потребуется его изменять, однако если вам нужно протестировать другой user agent, вы можете переопределить его с помощью свойства userAgent.

BrowserContext context = browser.newContext(new Browser.NewContextOptions()
.setUserAgent("My user agent"));

Офлайн

Эмулируйте отключение сети.

BrowserContext context = browser.newContext(new Browser.NewContextOptions()
.setOffline(true));

Включение JavaScript

Эмулируйте сценарий пользователя, в котором JavaScript отключен.

BrowserContext context = browser.newContext(new Browser.NewContextOptions()
.javaScriptEnabled(false));