在Cypress中设置浏览器语言
由于我有一个应用程序需要用多种语言测试,是否可以让Cypress用某种语言(如德语)启动Chrome。我在文件中看不到这一细节,这表明目前不可能 我尝试在Chrome启动时添加在Cypress中设置浏览器语言,cypress,Cypress,由于我有一个应用程序需要用多种语言测试,是否可以让Cypress用某种语言(如德语)启动Chrome。我在文件中看不到这一细节,这表明目前不可能 我尝试在Chrome启动时添加--lang参数,但这似乎没有任何效果,Chrome仍然使用英语。请参阅下面的pluginsFile代码 module.exports = (on, config) => { on('before:browser:launch', (browser = {}, args) => { if (brow
--lang
参数,但这似乎没有任何效果,Chrome仍然使用英语。请参阅下面的pluginsFile
代码
module.exports = (on, config) => {
on('before:browser:launch', (browser = {}, args) => {
if (browser.name === 'chrome') {
args.push('--lang=de')
return args
}
})
}
我还尝试了
--lang=de de
,但也没有成功。我遇到了类似的问题,当启动cypress时,浏览器将使用我的默认语言(荷兰语),而我们所有的测试都希望英语是默认语言。我发现了一个关于参数lang param的问题,但它对我的浏览器语言没有影响
最后,我可以通过更改LANG环境变量来解决这个问题——我正在使用Linux。在终端中,我键入了以下内容:
export LANG=“en\u en.UTF-8”
然后我从同一个终端运行cypress。
您可以编写此脚本,对于其他操作系统,如MacOS和Windows,可能也有类似的环境变量。请参阅中的完整示例,但简而言之
it('显示克林贡语问候语',()=>{
cy.visit('index.html'{
加载前加载(win){
//不起作用
//未捕获的TypeError:无法分配给只读属性
//对象“[object Navigator]”的“语言”
//win.navigator.language='Klingon'
//相反,我们需要定义这样的属性
Object.defineProperty(win.navigator,'language'{
值:“克林贡”
})
}
})
cy.contains('#问候语','nuqneH')。应('be.visible')
})
除了添加命令行选项外,还可以使用Cypress的浏览器启动API()更改浏览器首选项。这允许您覆盖如下接受语言标题设置:
on('before:browser:launch', (browser, launchOptions) => {
if (browser.family === 'chromium' && browser.name !== 'electron') {
launchOptions.preferences.default.intl = { accept_languages: "nl" }
return launchOptions
}
}
请注意,launchOptions.preferences.default
对象可能为空,因此尝试直接分配给launchOptions.preferences.default.intl.accept\u languages
可能会失败
对于我们的一个项目,这足以让我们正在测试的站点以正确的语言显示。如果您需要更多,可以尝试更改更多语言设置(请参阅并查找“intl”)
另一方面,据介绍,
--lang
命令行选项似乎只适用于Windows。在Mac上,您需要更改系统首选项,在Linux上,您可以使用语言环境变量。您找到解决方案了吗?我还试图找到一个答案,您的web应用程序是如何使用这种语言的?你能给我一段代码吗?它只是看一下导航器语言吗?这能回答你的问题吗?这根本不起作用。选中newdate().toLocalString()
,您将看到格式没有改变。我认为不可能用Javascript改变用户的语言,这是有充分理由的。这需要在Cypress级别上进行处理。您可能仍然希望以编程方式更改应用程序语言。它不能直接解决所有应用程序的问题,但在许多情况下,有可能覆盖浏览器的语言(从用户偏好、cookie、开关等)是有意义的。也许您可以分享关于无法更改语言的原因的见解?我们的应用程序实际上使用了语言
数组,而不是语言
字段(注意S)。在这种情况下,您必须稍微修改一下这个示例。这就是为什么--lang
对我不起作用的原因。。。不管怎样,你知道如何在测试中改变吗?如果可能的话all@crollywood对不起,我已经几个月没有和Cypress合作了,我不知道。也许你可以问一个单独的问题和/或尝试Cypress的支持渠道。我想每次测试更改浏览器语言可能需要退出并重新启动浏览器。