Skip to content

Playwright 移动端测试

Playwright 移动端测试,主要包括模拟移动设备、地理位置、权限控制等功能。

Playwright 除了能模拟桌面浏览器,还支持 移动端设备测试,包括:

  • 模拟不同手机型号(屏幕大小、分辨率、UA 等)
  • 模拟触摸事件(点击、滑动、长按)
  • 模拟地理位置(GPS)
  • 模拟权限(摄像头、定位、通知)

这让我们能在 PC 上测试出接近真实手机的效果。


模拟设备

Playwright 提供了一些常见的设备配置(基于 Chrome DevTools 设备描述),可以通过 devices 调用。

实例

javascript
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、轻点

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

2、滑动/拖动

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

3、长按

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

模拟地理位置

可以模拟手机的 GPS 定位

实例

javascript
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(通知)
javascript
const context = await browser.newContext({
  permissions: ['geolocation', 'notifications']
});

模拟横竖屏切换

通过修改 viewport 配置实现。

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

完整实例:移动端测试

实例

javascript
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 数据)。使用时通过:

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

即可获得该设备的配置参数。

iPhone 系列

设备名称viewportdeviceScaleFactorUA (简写)备注
iPhone SE375 × 6672Safari iOS小屏经典款
iPhone 6375 × 6672Safari iOS旧款
iPhone 7375 × 6672Safari iOS旧款
iPhone 8375 × 6672Safari iOS常用
iPhone 8 Plus414 × 7363Safari iOS大屏
iPhone X375 × 8123Safari iOS刘海屏
iPhone 11414 × 8962Safari iOS常用
iPhone 11 Pro375 × 8123Safari iOS
iPhone 11 Pro Max414 × 8963Safari iOS
iPhone 12390 × 8443Safari iOS热门
iPhone 12 Pro390 × 8443Safari iOS
iPhone 12 Pro Max428 × 9263Safari iOS大屏
iPhone 12 Mini360 × 7803Safari iOS小屏
iPhone 13390 × 8443Safari iOS热门
iPhone 13 Pro390 × 8443Safari iOS
iPhone 13 Pro Max428 × 9263Safari iOS
iPhone 13 Mini360 × 7803Safari iOS

Google Pixel 系列

设备名称viewportdeviceScaleFactorUA (简写)备注
Pixel 2411 × 7312.6Chrome Android旧款
Pixel 2 XL411 × 8233.5Chrome Android大屏
Pixel 3393 × 7862.75Chrome Android
Pixel 3 XL412 × 8473.5Chrome Android
Pixel 4353 × 7452.75Chrome Android
Pixel 4 XL412 × 8693.5Chrome Android
Pixel 5393 × 8512.75Chrome Android推荐

iPad 系列

设备名称viewportdeviceScaleFactorUA (简写)备注
iPad (gen 6)768 × 10242Safari iOS常用
iPad (gen 7)810 × 10802Safari iOS
iPad Air820 × 11802Safari iOS
iPad Mini768 × 10242Safari iOS
iPad Pro 11834 × 11942Safari iOS
iPad Pro 12.91024 × 13662Safari iOS大屏

其他 Android 机型

设备名称viewportdeviceScaleFactorUA (简写)备注
Galaxy S5360 × 6403Chrome Android较老
Galaxy S8360 × 7404Chrome Android
Galaxy S9+412 × 8464.5Chrome Android
Galaxy Note 3360 × 6403Chrome Android
Galaxy Note 9414 × 8464.5Chrome Android
Galaxy A51/71412 × 9142.63Chrome Android热门

使用方法

实例

javascript
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();

})();

AI 思考中...

Playwright 文件操作

Playwright 测试

基于 VitePress 构建,部署于 GitHub Pages