微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

赛普拉斯不能在每个循环内更改变量

如何解决赛普拉斯不能在每个循环内更改变量

好的,所以我有以下代码

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
 
});

我想测试每个项目,如果条件错误,我想在变量“ Fails”中加1。

然后,最后,如果Fails为0,则没有错误,我希望它记录消息“ NO FAILS”。问题是,即使变量在EACH内部变为1,在外部也变为0。

这让我很沮丧,因为Im曾经用C#和C#编写代码,因为变量的声明不在每个代码的范围之内,所以可以工作。

你们有什么建议?

解决方法

JavaScript异步运行,这意味着您的代码没有按顺序运行。因此,在您的情况下,首先执行Outside the each:,然后执行Inside the 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)
   })
})

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。