我正在尝试在cypress的each循环中设置一个变量,稍后再使用这个变量。变量在循环中递增,但在我使用它时在它外部变为零。你能向我解释为什么,以及我如何纠正这个问题吗?谢谢
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。我该怎么做?
非常感谢。
发布于 2020-01-20 07:45:09
正如在cypress documentation中很好地解释的,
您不能分配或使用任何Cypress命令的返回值。命令被排入队列并异步运行。
因此,您可以将您的getNoEntries()函数代码链接到调用函数的cypress命令本身中,而不是使用函数的返回值。
此外,“outofloop”是0,因为变量new value的作用域在cy.get()本身中结束。要获得变量的新值,可以将第二个log()链接到第一个命令的then()中,如下所示。
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);
})https://stackoverflow.com/questions/59799488
复制相似问题