使用 Google Chrome Headless 模式强制执行屏幕截图分辨率

Jam*_*ves 5 google-chrome nightwatch.js 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"
  }
}
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激。

小智 7

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

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