赛普拉斯 |无法在每个循环内更改变量
Cypress | Cant change variable inside each loop
好的,所以,我有这个代码:
Cypress.Commands.add ('MethodName', (argument) => {
var Fails = 0
cy.get('anything').each(Id => {
if (blablabla) {
Fails += 1
cy.log("Inside the each: " + Fails) //prints 1
}
})
cy.log("Outside the each: " + Fails) //prints 0
});
我想测试每个项目,如果条件错误,我想给变量“失败”加 1。
然后,最后,如果 Fails 为 0,则没有错误,我希望它记录消息“NO FAILS”。问题是,即使变量在 EACH 内部变为 1,当它在外部时,它又回到 0.
这让我很沮丧,因为我以前写过 C# 代码,在 C# 中,这行得通,因为变量的声明在 each 之外。
你们有什么建议?
JavaScript 运行 是异步的,这意味着您的代码没有按顺序 运行。所以你的情况是先执行 Outside the each:
,然后执行 Inside the each:
。要确保 Outside each 运行s 在 inside each 之后,你必须使用 then()
.
Cypress.Commands.add('MethodName', (argument) => {
var Fails = 0
cy.get('anything').each(Id => {
if (blablabla) {
Fails += 1
cy.log("Inside the each: " + Fails)
}
}).then(() => {
cy.log("Outside the each: " + Fails)
})
})
好的,所以,我有这个代码:
Cypress.Commands.add ('MethodName', (argument) => {
var Fails = 0
cy.get('anything').each(Id => {
if (blablabla) {
Fails += 1
cy.log("Inside the each: " + Fails) //prints 1
}
})
cy.log("Outside the each: " + Fails) //prints 0
});
我想测试每个项目,如果条件错误,我想给变量“失败”加 1。
然后,最后,如果 Fails 为 0,则没有错误,我希望它记录消息“NO FAILS”。问题是,即使变量在 EACH 内部变为 1,当它在外部时,它又回到 0.
这让我很沮丧,因为我以前写过 C# 代码,在 C# 中,这行得通,因为变量的声明在 each 之外。
你们有什么建议?
JavaScript 运行 是异步的,这意味着您的代码没有按顺序 运行。所以你的情况是先执行 Outside the each:
,然后执行 Inside the each:
。要确保 Outside each 运行s 在 inside each 之后,你必须使用 then()
.
Cypress.Commands.add('MethodName', (argument) => {
var Fails = 0
cy.get('anything').each(Id => {
if (blablabla) {
Fails += 1
cy.log("Inside the each: " + Fails)
}
}).then(() => {
cy.log("Outside the each: " + Fails)
})
})