首页 > 解决方案 > 使用 Google Chrome Headless 模式强制执行屏幕截图分辨率

问题描述

我在 Nightwatch 和 Chrome 以无头模式启动时遇到问题。我已经设置了一个脚本来截取我的页面的屏幕截图,稍后我会与这些屏幕截图进行比较,以找出它们之间的区别。我遇到的问题是,根据运行我的脚本的机器,屏幕截图总是不同的,因为它们的分辨率不同。

这是 Nightwatch 在我的带有视网膜显示屏的 Mac 上捕获的屏幕截图。

大屏幕截图

这是 CircleCI 在运行相同脚本时捕获的:

小截图

在无头模式下启动 Chrome 时,有没有办法强制屏幕分辨率?我曾与 Puppeteer 等其他库合作过,它似乎是一致的。窗口宽度/高度始终受到尊重,但实际图像的大小是导致问题的原因。

这是我的 Nightwatch 配置文件中的启动设置:

"chrome_launch" : {
  "launch_url" : "https://localhost:8000",
  "globals" : {
    "abortOnAssertionFailure": false,
    "env" : "local"
  },
  "desiredCapabilities": {
    "chromeOptions" : {
      "args" : ["window-size=1280,2480", "headless", "disable-gpu", "hide-scrollbars"]
    },
    "resolution": "1440x900"
  }
}

任何帮助将不胜感激。

标签: google-chromenightwatch.jsgoogle-chrome-headless

解决方案


我遇到了同样的问题,--force-device-scale-factor=1在 chrome 中传递这个参数对我有用:

google-chrome --headless --force-device-scale-factor=1 --window-size=1200,800


推荐阅读