学习 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 或调整视口高度超过页面内容。
相关推荐
智擎软件测评小祺2 天前
渗透测试报告关键模块拆解
网络·web安全·渗透测试·测试·检测·cma·cnas
智擎软件测评小祺2 天前
渗透测试报告撰写:漏洞发现到验证流程
网络·渗透测试·测试·cma·第三方检测·cnas·渗透测试报告
jaycyj3 天前
Web端抓包工具操作与应用
测试
神秘的t4 天前
抽奖系统测试报告
测试
阳光普照世界和平5 天前
单元测试工具现状及实现思路探析
测试·软件质量
jaycyj5 天前
Web项目功能测试用例实战
测试
智擎软件测评小祺5 天前
从报告看懂安全隐患,提升防护能力
安全·web安全·渗透测试·测试·检测·cma·cnas
独断万古他化6 天前
AI 赋能自动化测试实战:从用例生成到 CI/CD 全流程落地
人工智能·ci/cd·测试
甜甜圈圈子6 天前
基于Dify与DeepSeek:零门槛训练自己的专属AI大模型
测试
独断万古他化7 天前
基于 Selenium + POM 模式的聊天室系统 UI 自动化测试框架搭建与实践
selenium·测试工具·ui·自动化·测试·pom