学习 Puppeteer 的视口配置对象(Viewport)

完整视口配置对象

less 复制代码
{
  width: 800,          // 视口宽度(像素)
  height: 600,         // 视口高度(像素)
  deviceScaleFactor: 1,// 设备像素比(默认 1,即 1px = 1 设备像素)
  isMobile: false,     // 是否模拟移动设备(影响 User-Agent 和布局)
  hasTouch: false,     // 是否支持触摸事件(仅在 isMobile 为 true 时有意义)
  isLandscape: false   // 是否为横向模式(影响宽高逻辑,如移动端横竖屏)
}

各属性作用详解

  1. width height
    • 作用:定义视口的可见区域宽度和高度(以 CSS 像素为单位)。
    • 示例:设置 { width: 1920, height: 1080 } 表示视口为 1920x1080 像素。
    • 注意:截图时若未指定 fullPage: true,截图范围默认为此视口大小。
  1. deviceScaleFactor
    • 作用:模拟设备的像素密度(如 Retina 屏),值为 devicePixelRatio(实际设备像素 / CSS 像素)。
    • 示例:deviceScaleFactor: 2 表示 1 CSS 像素 = 2x2 设备像素,渲染更清晰(截图会更大)。
    • 默认值:1(普通屏幕)。
  1. isMobile
    • 作用:是否模拟移动设备环境,影响以下行为:
      • 自动设置移动设备的 User-Agent(如 Mozilla/5.0 (iPhone...)。
      • 调整视口元标签(viewport-fit=cover 等)。
      • 影响触摸事件和手势模拟。
    • 示例:模拟手机时设为 true,配合 deviceScaleFactor: 3 模拟高清屏。
  1. hasTouch
    • 作用:是否启用触摸事件支持(仅在 isMobile: true 时有效)。
    • 场景:若页面依赖触摸事件(如滑动、点击反馈),需设为 true。
    • 默认值:false(关闭触摸事件)。
  1. isLandscape
    • 作用:是否模拟横向(宽 > 高)模式,主要用于移动端横竖屏切换。
    • 影响:当 isMobile: true 时,设为 true 会交换 width 和 height 的逻辑(如手机横屏时宽度为高度,高度为宽度)。
    • 示例:模拟 iPhone 横屏:{ width: 812, height: 375, isMobile: true, isLandscape: true }。

如何修改视口配置?

  1. 创建页面时指定
php 复制代码
const page = await browser.newPage({
  viewport: { width: 1200, height: 800, deviceScaleFactor: 2 }
});
  1. 动态修改
php 复制代码
await page.setViewport({ width: 600, height: 800, isMobile: true });

注意事项

  • 无头模式与视口:在无头模式下,浏览器窗口大小和视口独立,需通过 setViewport 显式设置视口,否则默认使用 800x600。
  • 截图与视口:page.screenshot() 默认截取视口区域,若需全屏截图,需设置 fullPage: true 或调整视口高度超过页面内容。
相关推荐
Apifox16 小时前
Apifox 测试步骤之间怎么传递数据?搞懂上下游参数传递这一篇就够了!
前端·后端·测试
郝同学的测开笔记2 天前
深入解析:如何优雅计算时间区间内的有效时长
后端·mysql·测试
阿尔帕兹3 天前
测试分类详解
测试
大话性能3 天前
pyautogui的高级用法
测试
智云软件测评服务4 天前
软件测评中心如何确保软件品质?需求分析与测试计划很关键
测试·软件·案例
智云软件测评服务9 天前
独立机构软件第三方检测:流程、需求分析及电商软件检验要点?
测试·软件·操作
AnyaPapa14 天前
常用UI自动化测试框架
ui·自动化·框架·测试
mit6.82414 天前
[测试_3] 生命周期 | Bug级别 | 测试流程 | 思考
测试用例·bug·测试
song_ly00123 天前
深入理解软件测试覆盖率:从概念到实践
笔记·学习·测试