Pruebas móviles con Playwright

Pruebas móviles con Playwright, principalmente incluye funciones como simulación de dispositivos móviles, ubicación geográfica, control de permisos, etc.

Además de simular navegadores de escritorio, Playwright también admitepruebas en dispositivos móviles, que incluyen:

  • Simular diferentes modelos de teléfonos (tamaño de pantalla, resolución, UA, etc.)
  • Simular eventos táctiles (toque, deslizamiento, pulsación larga)
  • Simular ubicación geográfica (GPS)
  • Simular permisos (cámara, ubicación, notificaciones)

Esto nos permite probar en PC efectos similares a los de un teléfono real.


Simulación de dispositivos

Playwright ofrece algunas configuraciones de dispositivos comunes (basadas enChrome DevToolsdescripciones de dispositivos), que se puedendevicesinvocar.

Ejemplo

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

(async () => {
  const iPhone = devices['iPhone 12']; // Seleccionar dispositivo

  const browser = await chromium.launch();
  const context = await browser.newContext({
    ...iPhone  // Aplicar configuración del dispositivo
  });

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

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

Contenido que se puede simular:

  • Resolución de pantalla(width、height、deviceScaleFactor)
  • User-Agent(simular UA móvil)
  • Soporte de eventos táctiles
  • Cambio de orientación horizontal/vertical

Simular operaciones táctiles

Playwright activa el modo de dispositivo móvileventos táctiles。

Operaciones comunes:

1. Tocar

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

2. Deslizar / Arrastrar

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

3. Pulsación larga

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

Simular ubicación geográfica

Puede simular laubicación GPS。

Ejemplo

const context = await browser.newContext({
  geolocation: { longitude: 116.4074, latitude: 39.9042 }, // Pekín
  permissions: ['geolocation']
});

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

Simular permisos

Playwright admite otorgar o denegar permisos comunes, por ejemplo:

  • geolocation(ubicación geográfica)
  • camera(cámara)
  • microphone(micrófono)
  • notifications(notificaciones)
const context = await browser.newContext({
  permissions: ['geolocation', 'notifications']
});

Simular cambio de orientación horizontal/vertical

Modificando laviewportconfiguración.

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

Ejemplo completo: Pruebas móviles

Ejemplo

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 }, // Shanghái
    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 comunes

API Descripción Ejemplo
devices['iPhone 12'] Obtener configuración del dispositivo const iphone = devices['iPhone 12']
context = browser.newContext({...device}) Activar simulación de dispositivo ...iPhone
page.tap(selector) Tocar un elemento await page.tap('#btn')
page.touchscreen.tap(x,y) Tocar en coordenadas await page.touchscreen.tap(100,200)
page.touchscreen.down(x,y) Presionar dedo await page.touchscreen.down(100,200)
page.touchscreen.up() Levantar dedo await page.touchscreen.up()
geolocation Establecer ubicación { longitude: 120, latitude: 30 }
permissions Establecer permisos ['geolocation','camera']
viewport Establecer ancho y alto de pantalla { width: 812, height: 375 }
isMobile Activar modo móvil isMobile: true

Dispositivos comunes

Playwright incluye una lista de dispositivos comunes, que incluyeserie iPhone, serie Pixel, iPad, etc.

Lista de dispositivos comunes de Playwright

Playwright incluye decenas de configuraciones de dispositivos comunes (basadas en datos de Chrome DevTools). Para usarlas, mediante:

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

se obtienen los parámetros de configuración de ese dispositivo.

Serie iPhone

Nombre del dispositivo viewport deviceScaleFactor UA (abreviado) Notas
iPhone SE 375 × 667 2 Safari iOS Clásico de pantalla pequeña
iPhone 6 375 × 667 2 Safari iOS Modelo antiguo
iPhone 7 375 × 667 2 Safari iOS Modelo antiguo
iPhone 8 375 × 667 2 Safari iOS Común
iPhone 8 Plus 414 × 736 3 Safari iOS Pantalla grande
iPhone X 375 × 812 3 Safari iOS Pantalla con muesca
iPhone 11 414 × 896 2 Safari iOS Común
iPhone 11 Pro 375 × 812 3 Safari iOS
iPhone 11 Pro Max 414 × 896 3 Safari iOS
iPhone 12 390 × 844 3 Safari iOS Popular
iPhone 12 Pro 390 × 844 3 Safari iOS
iPhone 12 Pro Max 428 × 926 3 Safari iOS Pantalla grande
iPhone 12 Mini 360 × 780 3 Safari iOS Pantalla pequeña
iPhone 13 390 × 844 3 Safari iOS Popular
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

Serie Google Pixel

Nombre del dispositivo viewport deviceScaleFactor UA (abreviado) Notas
Pixel 2 411 × 731 2.6 Chrome Android Modelo antiguo
Pixel 2 XL 411 × 823 3.5 Chrome Android Pantalla grande
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 Recomendado

Serie iPad

Nombre del dispositivo viewport deviceScaleFactor UA (abreviado) Notas
iPad (gen 6) 768 × 1024 2 Safari iOS Común
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 Pantalla grande

Otros modelos Android

Nombre del dispositivo viewport deviceScaleFactor UA (abreviado) Notas
Galaxy S5 360 × 640 3 Chrome Android Más antiguo
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 Popular

Método de uso

Ejemplo

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 }, // Pekín
    permissions: ['geolocation']
  });
  const page = await context.newPage();
  await page.goto('https://www.example.com');
  await page.screenshot({ path: 'iphone12.png' });
  await browser.close();
})();
Otras extensiones