我试图在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。我该怎么做?
非常感谢。
答案 0 :(得分:0)
您不能分配或使用任何赛普拉斯命令的返回值。命令已排队并异步运行。
因此,您可以不使用函数的返回值,而可以在调用函数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);
})