Javascript 如何在Puppeter中指定浏览器语言

Javascript 如何在Puppeter中指定浏览器语言,javascript,google-chrome,google-chrome-headless,puppeteer,browser-testing,Javascript,Google Chrome,Google Chrome Headless,Puppeteer,Browser Testing,我想用Puppeter推出一款谷歌Chrome浏览器,其语言为西班牙语es 我尝试了puppeter.launch(args:['--lang=es',…],…),但没有成功 我尝试通过环境变量LANGUAGE=es mocha puppeter test.js,但没有成功 我尝试使用userDataDir选项,并将带有首选项的文件夹传递给文件{“intl”:{“accept_languages”:“es”}但是浏览器设置-语言仍然不显示西班牙语,也不显示window.navigator.lan

我想用Puppeter推出一款谷歌Chrome浏览器,其语言为西班牙语
es

我尝试了
puppeter.launch(args:['--lang=es',…],…)
,但没有成功

我尝试通过环境变量
LANGUAGE=es mocha puppeter test.js
,但没有成功

我尝试使用
userDataDir
选项,并将带有
首选项的文件夹传递给
文件
{“intl”:{“accept_languages”:“es”}
但是浏览器设置-语言仍然不显示西班牙语,也不显示
window.navigator.languages
也不显示
window.navigator.language

我正在使用
木偶演员0.11.0
节点8.4.0
NPM 5.2.0
macOS El Capitan 10.11.6

MacBook Pro Retina,15英寸,2015年年中有几种方法可以更改区域设置,您可以尝试所有这些方法来找到适合您的方法

启动时使用Args 将语言作为标题发送 强行设置语言 为了进行测试,我将用多种语言对此进行测试,包括
es
,结果如下

谷歌搜索:

BrowserLeaks:
阿布·塔赫尔博士的回答有错误

navigator.language
的响应应返回字符串,而不是数组。在您自己的浏览器控制台中尝试

代码段应为:

await page.evaluateOnNewDocument(() => {
    Object.defineProperty(navigator, "language", {
        get: function() {
            return "en-GB";
        }
    });
    Object.defineProperty(navigator, "languages", {
        get: function() {
            return ["en-GB", "en"];
        }
    });
});

从终端启动Chromium浏览器时,传递语言参数有效吗?我也有同样的问题,“window.navigator”在Puppeter的无头Chromium中没有定义,即使使用--lang开关。请注意,这个
args
解决方案在mac OS上不起作用mac OS X还有其他方法吗?他们写道,设置环境变量
LANG
在Linux上也应该起作用。不过,对于Windows来说,似乎不是这样的……谢谢你指出这一点,我已经更新了我的答案。
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"];
        }
    });
});
await page.evaluateOnNewDocument(() => {
    Object.defineProperty(navigator, "language", {
        get: function() {
            return "en-GB";
        }
    });
    Object.defineProperty(navigator, "languages", {
        get: function() {
            return ["en-GB", "en"];
        }
    });
});