当前位置: 首页 > 知识库问答 >
问题:

在Cypress中,如何计算选定的项目并获得长度?

贺景胜
2023-03-14

我开始学柏树了。我有一个4行表(有一类可更新的)。我可以这样验证行数:

cy.get('.datatable').find('tr').each(function(row, i){
        expect(i).to.be.lessThan(4)
})

这很好,但看起来很尴尬,因为我只想计算长度,并不需要访问行中的内容,我假设做一件事比做4件事要快。

如果我记录所选内容(不确定还可以叫它什么):

cy.log(cy.get('.datatable').find('tr'))

它以[对象对象]的形式出现,我不太确定如何解构它,这向我表明我完全错了。

如果我尝试:

expect(cy.get('.datatable').find('tr')).to.have.lengthOf(4)

我得到的AssertionError:预期{Object(chainer Id, firstCall)}有一个属性'长度'

如果我尝试:

    expect(Cypress.$('.datatable > tr')).to.have.lengthOf(4)

我得到AssertionError:expected{Object(length,prevObject,…)}如果长度为4,但得到0,那么这里至少有一个长度?

如果我记录了选择的方法,我得到了对象{4}。我不知道从这里去哪里。这似乎是一件非常常见的事情。

共有3个答案

牟慎之
2023-03-14

如果您想要更灵活,并有一个动态的结果,请使用此。

cy.get('.listings-grid')
  .find('.listing')
  .then(listing => {
    const listingCount = Cypress.$(listing).length;
    expect(listing).to.have.length(listingCount);
  });
富凯旋
2023-03-14

您还可以通过其属性获取所选项目的长度,例如:

cy.get('.datatable').find('tr').its('length').should('eq', 4)
cy.get('.datatable').find('tr').its('length').should('be.gte', 4)

除了应该('have.length',4)

凌琦
2023-03-14

找到一个解决方案,这可用于检查项目数:

cy.get('.datatable').find('tr').should('have.length', 4)

这不适用于Cypress$()表示法。

参考:https://docs.cypress.io/guides/references/assertions.html#Length

 类似资料:
  • 我正在用cypress做E2E测试。我必须计算表中的行数,每种情况都不同。 在正常的javascript中,我写这个只是为了得到列的总行数 不幸的是,在柏树我得到以下错误: 我试着这样数数但一无所获 我不知道它从哪里返回了行数

  • 我试图计算select元素中的选项数,以及DOM中某个类的元素数。 我需要比较这两个总数来得出赛普拉斯的断言。 我可以选择所需的选项,并使用each()对它们进行迭代,然后以这种方式递增一个计数器。然而,它是异步的,也是一个笨拙的解决方案。我确信我的cy.get()生成的对象有一个length属性,我就是看不懂它。 这是我期望的事情之一。它将未定义的日志记录到控制台。 我知道我的别名很好,并且我的

  • 以下代码起作用: 如何将第二行重构为: 您对所选的******选项使用了什么?

  • 我想计算选择属性中的选项,但我的测试失败了,这是我的规范: 它给了我错误: C:\wamp\www\First-angular-App

  • 我正在做宠物项目和使用NetBeans JFrame。我面临一个问题,我只能计算一个选中的chexBox总数。但是我如何实现一个方法或smth,它可以帮助计算所有选中的CheXBoxes的总数。很高兴回答我该如何执行和计算检查的价格?下面是我的代码和截图

  • 此组件来自https://github.com/skratchdot/react-bootstrap-multiselect handleChange()函数中应该写什么?