You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在使用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更新后可能要重新调整选择器,所以优先用前两个方法哦。

亲测第一个方法最省心,你可以先试试,应该就能摆脱这个烦人的弹窗啦!

火山引擎 最新活动