学习 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 或调整视口高度超过页面内容。
相关推荐
虫无涯1 天前
【分享】AgileTC测试用例管理平台使用分享
测试
zhuyasen2 天前
PerfTest: 压测工具界的“瑞士军刀”,原生支持HTTP/1/2/3、Websocket,同时支持实时监控
go·测试
霍格沃兹_测试4 天前
Browser Use 浏览器自动化 Agent:让浏览器自动为你工作
人工智能·测试
程序员二黑4 天前
Postman接口测试全攻略:从入门到精通,看这一篇就够了
单元测试·测试·ab测试
叫我阿柒啊5 天前
Java全栈工程师的面试实战:从基础到复杂问题的完整解析
java·数据库·spring boot·微服务·vue3·测试·全栈开发
Apifox5 天前
理解和掌握 Apifox 中的变量(临时、环境、模块、全局变量等)
前端·后端·测试
柒柒的代码学习日记6 天前
博客系统Web自动化测试项目:从用例设计到脚本执行全流程解析
自动化测试·测试·测试项目
王喵喵喵6 天前
每天一个安卓测试开发小知识之 (四)---常用的adb shell命令第二期 pm命令
android·测试