赛普拉斯和设置变量

时间:2020-01-18 10:11:15

标签: javascript typescript cypress

我试图在cypress的每个循环中设置一个变量,然后再使用该变量。变量在循环中递增,但是当我使用它时在其外部变为零。您能否向我解释原因,以及如何纠正此问题?谢谢

public getNoEntries(fullName: string) : number
  {
    let noEntries: number = 0;
    cy.get(this.employeeList).find('li').each((x) =>
      {  
        var entryName = x.text().trim();
        if (entryName.localeCompare(fullName)==0)
        { 
          ++noEntries;
          cy.log("in loop: "+noEntries.toString());                       
        }             
      });

    cy.log('out of loop:'+noEntries);

    return noEntries;
  }

输出为:

循环中的

:1 循环中:2 循环中:3 循环外:0

我希望它返回3。我该怎么做?

非常感谢。

1 个答案:

答案 0 :(得分:0)

cypress documentation所述,

您不能分配或使用任何赛普拉斯命令的返回值。命令已排队并异步运行。

因此,您可以不使用函数的返回值,而可以在调用函数cypress命令本身内部链接getNoEntries()函数代码。

'outofloop'也为0,因为新值变量的范围以cy.get()本身结尾。要获得该变量的新值,可以在第一个命令的then()中链接第二个log(),如下所示。

let noEntries: number = 0;
cy.get(this.employeeList).find('li').each((x) =>
  {  
    var entryName = x.text().trim();
    if (entryName.localeCompare(fullName)==0)
    { 
      ++noEntries;
      cy.log("in loop: "+noEntries.toString());                       
    }             
  })
  .then(()=>{
    cy.log('out of loop:'+noEntries);
  })