javascript - 如何在 Puppeteer 中指定浏览器语言

标签 javascript google-chrome google-chrome-headless puppeteer browser-testing

我想使用 Puppeteer 启动带有西类牙语 es 语言的 Google Chrome 浏览器。

我试过 puppeteer.launch(args:['--lang=es',...],...) 但没有成功。

我试过传递环境变量 LANGUAGE=es mocha puppeteer-test.js 但它没有用。

我试过使用 userDataDir 选项并传递一个带有 Preferences 文件的文件夹 { "intl": { "accept_languages": "es"} 但浏览器设置 - 语言仍然不显示西类牙语,window.navigator.languages 也没有 window.navigator.language

我正在使用
puppeteer 师 0.11.0
节点 8.4.0
NPM 5.2.0
macOS El Capitan 10.11.6
MacBook Pro Retina,15 英寸,2015 年中

最佳答案

有多种更改语言环境的方法,您可以尝试所有方法以找到适合您的方法,

启动时使用参数

const browser = await puppeteer.launch({
    headless: false,
    args: ['--lang=bn-BD,bn']
});

将语言作为标题发送

await page.setExtraHTTPHeaders({
    'Accept-Language': 'bn'
});

强制设置语言

// Set the language forcefully on javascript
await page.evaluateOnNewDocument(() => {
    Object.defineProperty(navigator, "language", {
        get: function() {
            return "bn-BD";
        }
    });
    Object.defineProperty(navigator, "languages", {
        get: function() {
            return ["bn-BD", "bn"];
        }
    });
});

为了测试,我将使用多种语言(包括es)对其进行测试,结果如下。

谷歌搜索:

es bn

浏览器泄露:

enter image description here

关于javascript - 如何在 Puppeteer 中指定浏览器语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46908636/

相关文章:

html - Chrome/Webkit 悬停问题

google-chrome - 使用命令行开关/启动参数在 Chrome 中打印图像

javascript - 检查是否支持 Javascript 删除功能

JavaScript - 比较字符串并从其中一个字符串中删除第一个字符,直到它们相等

javascript - 变量不会在Chrome JavaScript调试器中自动显示

google-chrome - 使用 Selenium 的 Headless Chrome 无法正确加载网页元素

java - org.openqa.selenium.WebDriverException : unknown error: Chrome failed to start: crashed (headless chrome)

javascript - Angularjs 文件上传在 ng-if 中不起作用

javascript - jquery条件表单提交

asp.net - 仅在 chrome 中内容不随 div 移动(asp 控件问题)