首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cypress和设置变量

问Cypress和设置变量
EN

Stack Overflow用户
提问于 2020-01-18 18:11:15
回答 1查看 437关注 0票数 1

我正在尝试在cypress的each循环中设置一个变量,稍后再使用这个变量。变量在循环中递增,但在我使用它时在它外部变为零。你能向我解释为什么,以及我如何纠正这个问题吗?谢谢

代码语言:javascript
复制
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。我该怎么做?

非常感谢。

EN

回答 1

Stack Overflow用户

发布于 2020-01-20 07:45:09

正如在cypress documentation中很好地解释的,

您不能分配或使用任何Cypress命令的返回值。命令被排入队列并异步运行。

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

此外,“outofloop”是0,因为变量new value的作用域在cy.get()本身中结束。要获得变量的新值,可以将第二个log()链接到第一个命令的then()中,如下所示。

代码语言:javascript
复制
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);
  })
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59799488

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档