我想使用赛普拉斯环境变量来强制浏览器使用不同的语言。
这是我的示例cypress.json的样子:
{
"env":{
"baseUrl": "localhost",
"language": {
"en": "5.44.16.0",
"se": "31.211.192.0"
},
}
}
我尝试过:
const market = Cypress.env(language.se) // se here is just an example, I want it to be dynamic
cy.server({
onAnyRequest: function (route, proxy) {
proxy.xhr.setRequestHeader(
"x-forwarded-for",
market
);
},
});
cy.visit(Cypress.env('baseUrl'))
但是没有用。
我想要实现的是能够通过强制从命令行执行语言来执行Cypress,如下所示:
cypress run --env language=se
“ se”存储cypress.json文件中的IP值的位置 我是赛普拉斯的新手,因此非常感谢您的帮助。
答案 0 :(得分:1)
您需要从环境变量读取'ip'的方式是错误的。
在--arg
脚本中:
package.json
使用npm run调用命令时,您需要使用-字符串传递命令的参数。
"test": "cypress run",
命令:npm
npm run test-local -- --env language=se
:direct cypress command
在cypress run --env language=se
中:
config.json
在{
"env":{
"baseUrl": "localhost",
"ip": {
"en": "5.44.16.0",
"se": "31.211.192.0"
}
}
}
规范中:
Test
注意:我将const language = Cypress.env('language');
const market = Cypress.env('ip')[language] // se here is just an example, I want it to be dynamic
cy.log(`All: ${JSON.stringify(Cypress.env('ip'))}`);
cy.server({
onAnyRequest: function (route, proxy) {
cy.log(`For language: ${language} => ${market}`);
proxy.xhr.setRequestHeader(
"x-forwarded-for",
market
);
},
});
cy.visit(Cypress.env('baseUrl'))
用于屏幕截图