Configuration 如何设置浏览器';Cypress.io中的s语言(电子/铬)?
我的问题是如何配置以启动特定语言的浏览器实例 为了:Configuration 如何设置浏览器';Cypress.io中的s语言(电子/铬)?,configuration,internationalization,e2e-testing,cypress,lang,Configuration,Internationalization,E2e Testing,Cypress,Lang,我的问题是如何配置以启动特定语言的浏览器实例 为了: 是否对本地化(i18n)文本标签进行断言 检查i18n功能(在语言之间切换) 绕过连续集成(CI/CD)问题,例如,在 本地计算机,浏览器默认为fr\u fr,在CI/CD虚拟机上默认为en\u US 我试过(没有多大成功): 使用终端调用中的LANGUAGE=en_US 使用浏览器的API插件(请参见Cypress) 谢谢 来自Gleb Bahmutov: 您可以在cy.visit期间使用onBeforeLoad和类似Object.
- 是否对本地化(i18n)文本标签进行断言
- 检查i18n功能(在语言之间切换)
- 绕过连续集成(CI/CD)问题,例如,在
本地计算机,浏览器默认为
,在CI/CD虚拟机上默认为fr\u fr
en\u US
- 使用终端调用中的
LANGUAGE=en_US
- 使用浏览器的API插件(请参见Cypress)
onBeforeLoad
和类似Object.defineProperty(导航器,'language',{value:'de GE'})的内容设置它。
src:navigator有两个lang道具:
- 语言({value:'en-GB'}
- 语言(['en-GB'])
onBeforeLoad: (window, ...args) => {
Object.defineProperty(window.navigator, 'language', { value: 'en-GB' });
Object.defineProperty(window.navigator, 'languages', ['en-GB']);
ref:要在浏览器中设置语言,也要为请求设置语言,这是我在测试中必须做的,以下操作对我有效:
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' });
});
我们尝试在onBeforeLoad期间使用垫片覆盖navigator.locale,该垫片返回所需的区域设置,但这不会更改GET请求中使用的区域设置。找到解决方案了吗?无法使其工作,只是忽略了我的代码:
javascript cy.visit('/',{onBeforeLoad:(_contentWindow)=>{Object.defineProperty(navigator,'language',{value:'fr'}}}})
你能用cy.visit('/',{onBeforeLoad:(_contentWindow)=>{Object.defineProperty(_contentWindow.navigator,'language',{value:'fr'})})试试吗
我尝试了这两种组合,但都没能成功:(对此有任何帮助吗?请注意,这只实现了更改浏览器语言的一种效果-例如,这不会更改日期的行为。ToLocalString
,并且不会发送接受语言
标题。仅此一项对我有效。谢谢:竖起大拇指:…这有效!