Windows系统下如何让Puppeteer浏览器后台运行不抢占焦点?
Windows下Puppeteer避免浏览器抢占焦点的解决方案
方案1:启用新版无头模式(完全后台运行)
如果不需要可视化浏览器窗口,直接使用Puppeteer的新版无头模式,彻底避免窗口弹出和焦点抢占,代码示例:
const puppeteer = require('puppeteer'); (async () => { const browser = await puppeteer.launch({ headless: "new", // 启用功能完整的新版无头模式 // 若需自定义浏览器路径,添加executablePath参数 // executablePath: 'C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe' }); const page = await browser.newPage(); await page.goto('目标网站地址'); // 此处编写你的数值检查逻辑 await browser.close(); })();
方案2:有头模式下禁止焦点抢占(保留浏览器窗口但不激活)
如果必须保留浏览器窗口但不想让它抢占系统焦点,通过添加启动参数实现:
const puppeteer = require('puppeteer'); (async () => { const browser = await puppeteer.launch({ headless: false, args: [ '--no-focus-on-tab-switch', // 切换标签/启动时不获取系统焦点 '--start-minimized', // 启动时窗口最小化,彻底避免干扰 '--disable-features=TranslateUI' // 可选,关闭不必要的UI组件 ] }); const page = await browser.newPage(); await page.goto('目标网站地址'); // 此处编写你的数值检查逻辑 // 若需后续操作窗口,可调用page.setViewport调整大小,窗口仍保持后台状态 })();
关于Windows下找不到.local-chromium文件夹的说明
Puppeteer在Windows下的默认Chromium存储路径为node_modules\puppeteer\.local-chromium\winXXXXXX\chrome-win\chrome.exe(XXXXXX为版本号),但不建议修改本地Chromium的配置文件——一来路径随版本更新会变化,二来启动参数的方式更灵活且无需修改文件。如果你的项目使用系统安装的Chrome而非Puppeteer自带Chromium,只需在launch配置中指定executablePath到Chrome的安装路径即可,上述启动参数同样生效。
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

