You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux系统下Chrome新无头模式(--headless=new)中window-size参数失效问题

解决Chrome新无头模式(--headless=new)自定义分辨率不生效问题

Chrome 112+引入的新无头模式(--headless=new)与旧无头模式的参数逻辑存在差异,直接设置window-size参数经常会被默认的虚拟显示配置覆盖,导致截图始终是800x600的低分辨率。以下是经过验证的解决方法:

方法一:参数组合强制生效

新无头模式下,需要同时指定三个参数才能确保自定义分辨率生效:

  • --headless=new:启用新无头模式
  • --window-size=1600,1200:设置目标窗口分辨率
  • --force-device-scale-factor=1:禁用自动缩放,避免系统默认尺寸覆盖自定义设置

代码示例(以Selenium为例)

Python

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = Options()
options.add_argument("--headless=new")
options.add_argument("--window-size=1600,1200")
options.add_argument("--force-device-scale-factor=1")

driver = webdriver.Chrome(options=options)
# 后续截图或操作逻辑
driver.save_screenshot("test.png")
driver.quit()

Java

import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;

ChromeOptions options = new ChromeOptions();
options.addArguments("--headless=new");
options.addArguments("--window-size=1600,1200");
options.addArguments("--force-device-scale-factor=1");

ChromeDriver driver = new ChromeDriver(options);
// 截图操作
driver.getScreenshotAs(OutputType.FILE);
driver.quit();

方法二:CDP命令直接设置设备度量

如果参数组合仍然不生效,可以利用Chrome DevTools Protocol(CDP)直接强制设置窗口和截图的分辨率,这种方式优先级更高,不会被其他参数干扰。

Python示例

driver.execute_cdp_cmd("Emulation.setDeviceMetricsOverride", {
    "width": 1600,
    "height": 1200,
    "deviceScaleFactor": 1,
    "mobile": False,
    "screenOrientation": {
        "type": "portraitPrimary",
        "angle": 0
    }
})

注意事项

  • 避免同时使用--start-maximized或--kiosk等会强制改变窗口大小的参数,这些参数会覆盖window-size的设置
  • 确保Chrome版本在112及以上,新无头模式才会生效
  • 部分Linux环境下可能需要禁用Ozone平台特性,可额外添加--disable-features=UseOzonePlatform参数尝试

内容的提问来源于stack exchange,提问作者Monita Shinkar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 23:27:10