如何在Cypress.io(electron/chrome)中设置浏览器的语言?
How to set the browser's language in Cypress.io (electron/chrome)?
我的问题是关于配置 Cypress 以某种语言启动浏览器实例。
为了:
- 对本地化 (i18n) 文本标签进行断言?
- 检查 i18n 功能(在语言之间切换)
- 绕过持续集成 (CI/CD) 的问题,例如,在
本地计算机,浏览器默认为
fr_FR
,在 CI/CD VM 上默认为 en_US
?
我试过了(没有成功):
- 使用终端调用中的
LANGUAGE=en_US
,
- 使用浏览器的 API 插件(参见 Cypress 的 browser launch API documentation)
谢谢!
来自 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' });
});
我的问题是关于配置 Cypress 以某种语言启动浏览器实例。
为了:
- 对本地化 (i18n) 文本标签进行断言?
- 检查 i18n 功能(在语言之间切换)
- 绕过持续集成 (CI/CD) 的问题,例如,在
本地计算机,浏览器默认为
fr_FR
,在 CI/CD VM 上默认为en_US
?
我试过了(没有成功):
- 使用终端调用中的
LANGUAGE=en_US
, - 使用浏览器的 API 插件(参见 Cypress 的 browser launch API documentation)
谢谢!
来自 Gleb Bahmutov:
you set it during cy.visit using
onBeforeLoad
with something likeObject.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' });
});