【问题标题】:How to specify browser language in Puppeteer如何在 Puppeteer 中指定浏览器语言
【发布时间】:2017-10-24 10:53:15
【问题描述】:

我想使用 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

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

【问题讨论】:

  • 从终端启动 Chromium 浏览器时传递语言参数是否有效?
  • 我有同样的问题,“window.navigator”在 Puppeteer 的无头 Chromium 中未定义,即使使用 --lang 开关也是如此。

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


【解决方案1】:

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

启动时使用 Args

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,结果如下。

谷歌搜索:

浏览器泄漏:

【讨论】:

  • 请注意,args 解决方案在 mac os 上不起作用
  • mac OS X 还有其他方法吗?
  • Chromium issue 755338 他们写道设置环境变量LANG 应该在Linux 上也能正常工作。不过,对于 Windows 来说,这似乎没什么……
【解决方案2】:

Md-Abu-Taher 的回答有误。

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

代码sn-p应该是:

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

【讨论】:

  • 感谢您指出这一点,我已经更新了我的答案。
【解决方案3】:

在 Chrome Linux 上,您可以这样做

puppeteer.launch({ ...yourParams, env: { LANGUAGE: "fr_FR" } })

我不知道其他操作系统/浏览器...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-31
    • 2010-10-15
    • 1970-01-01
    • 2012-08-04
    • 1970-01-01
    • 2020-01-24
    相关资源
    最近更新 更多