Javascript 如何在Puppeter中指定浏览器语言
我想用Puppeter推出一款谷歌Chrome浏览器,其语言为西班牙语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
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"];
}
});
});