Мобильное тестирование в Playwright

Мобильное тестирование Playwright, в основном включающее такие функции, как имитация мобильных устройств, геолокация и управление разрешениями.

Помимо имитации десктопных браузеров, Playwright также поддерживаеттестирование мобильных устройств, включая:

  • Имитация различных моделей телефонов (размер экрана, разрешение, UA и т. д.)
  • Имитация событий касания (тап, свайп, долгое нажатие)
  • Имитация геолокации (GPS)
  • Имитация разрешений (камера, местоположение, уведомления)

Это позволяет тестировать на ПК с эффектами, близкими к настоящему телефону.


Эмуляция устройств

Playwright предоставляет некоторые распространённые конфигурации устройств (на основе дескрипторов устройствChrome DevTools), и может бытьdevicesвызван.

Пример

const { chromium, devices } = require('playwright');

(async () => {
  const iPhone = devices['iPhone 12']; // Выбрать устройство

  const browser = await chromium.launch();
  const context = await browser.newContext({
    ...iPhone  // Применить конфигурацию устройства
  });

  const page = await context.newPage();
  await page.goto('https://www.example.com');

  await page.screenshot({ path: 'mobile.png' });
  await browser.close();
})();

Что можно эмулировать:

  • Разрешение экрана(width、height、deviceScaleFactor)
  • User-Agent(эмулируемый мобильный UA)
  • Поддержка сенсорных событий
  • Переключение альбомной/портретной ориентации

Симуляция сенсорных операций

Playwright включаетсенсорные события。

Обычные операции:

1. Касание

await page.tap('button#submit');

2. Свайп/перетаскивание

await page.touchscreen.tap(200, 300); // 点击指定坐标
await page.touchscreen.swipe(200, 300, 200, 800); // 自定义封装,模拟滑动

3. Долгое нажатие

await page.touchscreen.down(200, 300);
await page.waitForTimeout(1000); // 按住 1 秒
await page.touchscreen.up();

Симуляция геолокации

Можно имитироватьGPS-позиционирование телефона。

Пример

const context = await browser.newContext({
  geolocation: { longitude: 116.4074, latitude: 39.9042 }, // Пекин
  permissions: ['geolocation']
});

const page = await context.newPage();
await page.goto('https://www.google.com/maps');

Имитация разрешений

Playwright поддерживает предоставление или отклонение распространённых разрешений, например:

  • geolocation(Геолокация)
  • camera(Камера)
  • microphone(Микрофон)
  • notifications(Уведомления)
const context = await browser.newContext({
  permissions: ['geolocation', 'notifications']
});

Имитация переключения альбомной/портретной ориентации

Путём измененияviewportконфигурации.

await context.newPage({
  viewport: { width: 812, height: 375 }, // 横屏
  isMobile: true
});

Полный пример: тестирование мобильных устройств

Пример

const { chromium, devices } = require('playwright');

(async () => {
  const pixel5 = devices['Pixel 5'];

  const browser = await chromium.launch({ headless: false });
  const context = await browser.newContext({
    ...pixel5,
    geolocation: { longitude: 121.4737, latitude: 31.2304 }, // Шанхай
    permissions: ['geolocation']
  });

  const page = await context.newPage();
  await page.goto('https://www.google.com/maps');

  await page.screenshot({ path: 'mobile-map.png' });

  await browser.close();
})();

Общие API

API Описание Пример
devices['iPhone 12'] Получить конфигурацию устройства const iphone = devices['iPhone 12']
context = browser.newContext({...device}) Включить эмуляцию устройства ...iPhone
page.tap(selector) Коснуться элемента await page.tap('#btn')
page.touchscreen.tap(x,y) Щёлкнуть по координатам await page.touchscreen.tap(100,200)
page.touchscreen.down(x,y) Опустить палец await page.touchscreen.down(100,200)
page.touchscreen.up() Поднять палец await page.touchscreen.up()
geolocation Установить геолокацию { longitude: 120, latitude: 30 }
permissions Установить разрешения ['geolocation','camera']
viewport Установить ширину и высоту экрана { width: 812, height: 375 }
isMobile Включить мобильный режим isMobile: true

Распространённые устройства

В Playwright есть встроенный список распространённых устройств, включаясерию iPhone, серию Pixel, iPadи т. д.

Список распространённых устройств Playwright

Playwright включает десятки конфигураций распространённых устройств (на основе данных Chrome DevTools). При использовании — через:

const { devices } = require('playwright');
const iphone = devices['iPhone 12'];

Вы можете получить параметры конфигурации этого устройства.

Серия iPhone

Название устройства viewport deviceScaleFactor UA (сокр.) Примечания
iPhone SE 375 × 667 2 Safari iOS Классический маленький экран
iPhone 6 375 × 667 2 Safari iOS Старая модель
iPhone 7 375 × 667 2 Safari iOS Старая модель
iPhone 8 375 × 667 2 Safari iOS Распространённые
iPhone 8 Plus 414 × 736 3 Safari iOS Большой экран
iPhone X 375 × 812 3 Safari iOS Экран с вырезом
iPhone 11 414 × 896 2 Safari iOS Распространённые
iPhone 11 Pro 375 × 812 3 Safari iOS
iPhone 11 Pro Max 414 × 896 3 Safari iOS
iPhone 12 390 × 844 3 Safari iOS Популярные
iPhone 12 Pro 390 × 844 3 Safari iOS
iPhone 12 Pro Max 428 × 926 3 Safari iOS Большой экран
iPhone 12 Mini 360 × 780 3 Safari iOS Маленький экран
iPhone 13 390 × 844 3 Safari iOS Популярные
iPhone 13 Pro 390 × 844 3 Safari iOS
iPhone 13 Pro Max 428 × 926 3 Safari iOS
iPhone 13 Mini 360 × 780 3 Safari iOS

Серия Google Pixel

Название устройства viewport deviceScaleFactor UA (сокр.) Примечания
Pixel 2 411 × 731 2.6 Chrome Android Старая модель
Pixel 2 XL 411 × 823 3.5 Chrome Android Большой экран
Pixel 3 393 × 786 2.75 Chrome Android
Pixel 3 XL 412 × 847 3.5 Chrome Android
Pixel 4 353 × 745 2.75 Chrome Android
Pixel 4 XL 412 × 869 3.5 Chrome Android
Pixel 5 393 × 851 2.75 Chrome Android Рекомендуется

Серия iPad

Название устройства viewport deviceScaleFactor UA (сокр.) Примечания
iPad (gen 6) 768 × 1024 2 Safari iOS Распространённые
iPad (gen 7) 810 × 1080 2 Safari iOS
iPad Air 820 × 1180 2 Safari iOS
iPad Mini 768 × 1024 2 Safari iOS
iPad Pro 11 834 × 1194 2 Safari iOS
iPad Pro 12.9 1024 × 1366 2 Safari iOS Большой экран

Другие модели Android

Название устройства viewport deviceScaleFactor UA (сокр.) Примечания
Galaxy S5 360 × 640 3 Chrome Android Старые
Galaxy S8 360 × 740 4 Chrome Android
Galaxy S9+ 412 × 846 4.5 Chrome Android
Galaxy Note 3 360 × 640 3 Chrome Android
Galaxy Note 9 414 × 846 4.5 Chrome Android
Galaxy A51/71 412 × 914 2.63 Chrome Android Популярные

Использование

Пример

const { chromium, devices } = require('playwright');

(async () => {
  const iPhone = devices['iPhone 12'];
  const browser = await chromium.launch({ headless: false });
  const context = await browser.newContext({
    ...iPhone,
    geolocation: { longitude: 116.4074, latitude: 39.9042 }, // Пекин
    permissions: ['geolocation']
  });
  const page = await context.newPage();
  await page.goto('https://www.example.com');
  await page.screenshot({ path: 'iphone12.png' });
  await browser.close();
})();
Другие расширения