如何在Cypress.io(electron/chrome)中设置浏览器的语言?

How to set the browser's language in Cypress.io (electron/chrome)?

我的问题是关于配置 Cypress 以某种语言启动浏览器实例。

为了:

我试过了(没有成功):

谢谢!

来自 Gleb Bahmutov:

you set it during cy.visit using onBeforeLoad with something like Object.defineProperty(navigator, 'language', { value: 'de-GE' })

来源:https://gitter.im/cypress-io/cypress?at=5d61408a07d1ff39f8769545

navigator 有两个 lang 属性:

  • 语言({值:'en-GB'}
  • 语言(['en-GB'])

navigator.language指的是navigator.languages的第一个元素 但是一些库检查 navigator.languages[0] 而不是 navigator.language,所以如果你设置两个属性更好

onBeforeLoad: (window, ...args) => {
  Object.defineProperty(window.navigator, 'language', { value: 'en-GB' });
  Object.defineProperty(window.navigator, 'languages', ['en-GB']);

参考:https://developer.mozilla.org/en-US/docs/Web/API/NavigatorLanguage/languages

要在浏览器和请求中设置语言,这是我必须为我的测试做的,以下对我有用:

cy.visit('url', {
    onBeforeLoad(win) {
      Object.defineProperty(win.navigator, 'language', { value: 'de-DE' });
      Object.defineProperty(win.navigator, 'languages', { value: ['de'] });
      Object.defineProperty(win.navigator, 'accept_languages', { value: ['de'] });
    },
    headers: {
      'Accept-Language': 'de',
    },
});

在support/index.js

Cypress.on('window:before:load', window => {
  Object.defineProperty(window.navigator, 'language', { value: 'fr' });
});