学习 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 或调整视口高度超过页面内容。
相关推荐
越学不动啦16 小时前
七、自动化概念篇
运维·软件测试·自动化·测试
论迹2 天前
【测试】-- 测试用例
测试用例·测试
ho0xi3 天前
记一次使用Loadrunner 11监控服务器资源进行配置rpc.rstatd的踩坑
测试
北京_宏哥3 天前
🔥PC端自动化测试实战教程-4-pywinauto 操作PC端应用程序窗口 - 上篇(详细教程)
前端·python·测试
小张已启程5 天前
docker安装及使用
测试
gongzemin5 天前
利用Sentry监控应用里的前后端
前端·后端·测试
WebInfra6 天前
Midscene v0.14 - 新增即时操作接口和深度思考
前端·人工智能·测试
bytebeats8 天前
在Kotlin中编写依赖于时间的可测试协程代码
android·kotlin·测试
越学不动啦10 天前
三、概念篇+Bug篇
bug·测试·软件测试入门·bug测试