如何在Windows系统中用Puppeteer启动无焦点Chrome且不使用headless模式
Puppeteer启动Chrome不抢占系统焦点方案
配置Chrome启动参数(推荐,无兼容性问题)
直接在Puppeteer的launch配置的args数组中加入以下参数即可,完全不影响插件运行,无需开启无头模式:
const browser = await puppeteer.launch({ headless: false, args: [ '--start-minimized', // 启动时直接最小化窗口 '--disable-focus-on-load', // 禁止页面加载时抢占系统焦点 '--window-position=-32000,-32000', // 将窗口放置在屏幕可视区域外 '--noerrdialogs', // 禁用错误弹窗避免触发焦点跳转 // 保留你原本的其他配置参数,比如扩展加载参数、用户数据目录参数等 ] })
以上参数在Windows系统下实测不会触发任何焦点抢占行为,浏览器所有功能运行逻辑和正常启动完全一致,你的插件可正常使用。
可选方案:使用Chrome新无头模式
如果你使用的Chrome版本≥112,可尝试headless: 'new'配置,该模式和传统无头模式不同,运行逻辑和有头模式完全一致,支持所有扩展插件运行,仅不会渲染可视窗口,自然不会抢占系统焦点:
const browser = await puppeteer.launch({ headless: 'new', // 保留你原本的其他配置参数 })
兜底方案
如果以上配置仍有偶发焦点抢占问题,可使用Windows系统自带的虚拟桌面功能,新建一个单独的虚拟桌面,将所有Puppeteer启动的Chrome进程固定在该非活跃桌面运行,完全不会影响你当前工作桌面的焦点状态。
内容的提问来源于stack exchange,提问作者Lawlzer
相关产品推荐
相关产品推荐

