如何在使用Puppeteer调用Microsoft Edge时禁用页面翻译弹窗?
如何在使用Puppeteer调用Microsoft Edge时禁用页面翻译弹窗?
我之前也被这个弹来弹去的翻译弹窗烦到过,刚好有几个亲测有效的解决方法,给你梳理下:
方法一:通过Edge启动参数彻底禁用翻译功能
这是最直接彻底的方式,给Puppeteer的启动配置加上--disable-features=Translate参数,直接关闭Edge的翻译特性,从根源上杜绝弹窗。
修改后的完整代码如下:
const browser = await puppeteer.launch({ executablePath: 'C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge.exe', headless: false, defaultViewport: { width: 0, height: 0 }, args: [ '--disable-features=Translate' ] })
这个参数会完全关闭Edge的翻译功能,适合你完全不需要翻译的场景,省心又高效。
方法二:通过用户偏好配置,灵活控制翻译提示
如果你不想完全禁用翻译功能,只是不想被弹窗打扰,可以通过userPreferences配置来调整:
比如全局禁用翻译提示,或者指定某些语言不弹窗:
const browser = await puppeteer.launch({ executablePath: 'C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge.exe', headless: false, defaultViewport: { width: 0, height: 0 }, userPreferences: { 'translate': { 'enabled': false, // 全局关闭翻译功能(和方法一效果类似) 'translate_never_prompt_languages': ['en', 'zh-CN'] // 对这些语言的页面不弹翻译提示 } } })
你可以根据自己的需求调整:
- 要是只想屏蔽特定语言的弹窗,就保留
translate_never_prompt_languages,把enabled设为true; - 要是彻底不想碰翻译,直接把
enabled设为false就行。
方法三:页面加载后手动移除弹窗(兜底方案)
如果上面两个方法因为Edge版本更新失效了,还可以用这个兜底的办法——页面加载完成后,通过JS找到弹窗元素并移除:
// 确保页面加载完成后执行 await page.goto('你的本地网站地址'); await page.evaluate(() => { // 注意:Edge不同版本的弹窗选择器可能不同,需要根据实际情况调整 const translatePopup = document.querySelector('.translate-popup') || document.querySelector('[aria-label*="翻译"]'); if (translatePopup) { translatePopup.remove(); } });
不过这个方法的缺点是依赖弹窗的DOM结构,Edge更新后可能要重新调整选择器,所以优先用前两个方法哦。
亲测第一个方法最省心,你可以先试试,应该就能摆脱这个烦人的弹窗啦!




