如何用Playwright关闭Firefox Nightly翻译弹窗?
解决Firefox Nightly内置翻译弹窗阻挡Playwright测试的问题
这个弹窗是Firefox原生内置的翻译UI,不属于页面DOM范畴,所以你之前用的page.getByText('Cancel')、page.keyboard.press('Escape')这类针对页面的API完全无效,监听页面弹窗事件也不覆盖浏览器原生UI。直接禁用Firefox的翻译功能是根治方案:
具体实现方法
在Playwright配置Firefox启动参数时,通过firefoxUserPrefs设置Firefox的内置偏好,直接关闭翻译相关功能:
全局配置(playwright.config.js)
module.exports = { use: { browserName: 'firefox', launchOptions: { firefoxUserPrefs: { // 彻底禁用翻译引擎 'browser.translation.engine': 'none', // 关闭翻译UI显示 'browser.translation.ui.show': false, // 全局禁用翻译功能 'browser.translation.enabled': false, // 可选:禁止页面加载时自动弹出翻译提示 'browser.translation.promptOnPageLoad': false }, }, }, };
单测试用例内配置
如果只需要在特定测试中禁用翻译:
const { firefox } = require('@playwright/test'); (async () => { const browser = await firefox.launch({ firefoxUserPrefs: { 'browser.translation.enabled': false, 'browser.translation.ui.show': false }, }); const page = await browser.newPage(); // 后续测试逻辑 await browser.close(); })();
为什么之前的方法无效?
- 原生浏览器UI不属于页面DOM,Playwright的
page对象无法访问或操作这类元素; page.keyboard.press('Escape')模拟的是页面内的键盘事件,无法触发系统级/浏览器级的快捷键响应;- 页面弹窗监听仅针对页面脚本打开的新窗口/弹窗,不包含浏览器原生组件。
内容的提问来源于stack exchange,提问作者Benjamin L.
相关产品推荐
相关产品推荐

