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

如何计算Cypress断言中的DOM元素

姚麒
2023-03-14

我试图计算select元素中的选项数,以及DOM中某个类的元素数。

我需要比较这两个总数来得出赛普拉斯的断言。

我可以选择所需的选项,并使用each()对它们进行迭代,然后以这种方式递增一个计数器。然而,它是异步的,也是一个笨拙的解决方案。我确信我的cy.get()生成的对象有一个length属性,我就是看不懂它。

这是我期望的事情之一。它将未定义的日志记录到控制台。

cy.get('div[data-cy-type="group-component"]:first').as('firstGroup');
cy.get('@firstGroup').find('[name=group_id]').as('groupSelect');
console.log(cy.get('@groupSelect').children('option').length);

我知道我的别名很好,并且我的cy.get()正在生成正确的select元素。

如果我这样做:

cy.get('@groupSelect').children('option').each(function(){
    console.log(i++);
});

然后它将迭代每个选项。但是它是异步的,所以在这个流程中没有多大帮助。

共有3个答案

隆康平
2023-03-14

我发现,不管出于什么原因,我需要两次链接get。第一个get应该选择一个父元素,然后第二个应该选择所有的元素,生活在该父元素下,你要计数。

const expectedCount = 5; // whatever count you expect
cy.get('.parentClass').get('.childClass').should('have.length', expectedCount);
冀望
2023-03-14

您可以简单地访问cypress选择器的length属性。

cy.get('.elements')
        .its('length')
        .then(lengthOfClassElements => cy
           .get('select > option')
           .its('length')
           .then(lengthOfOptions => {
               expect(lengthOfClassElements).to.be.moreThan(lengthOfOptions)
           });
郝昊东
2023-03-14

也许你可以利用Cypress。但是,请注意,文档并没有确切地宣传它是一种测试工具:

这是在从开发人员工具进行调试时同步查询元素的好方法。

无论如何,我相信沿着这条路线的某些东西会产生你期望的价值:

selector = 'div[data-cy-type="group-component"]:first select[name=group_id] option'
count = Cypress.$(selector).length
 类似资料:
  • 我正在用cypress做E2E测试。我必须计算表中的行数,每种情况都不同。 在正常的javascript中,我写这个只是为了得到列的总行数 不幸的是,在柏树我得到以下错误: 我试着这样数数但一无所获 我不知道它从哪里返回了行数

  • 我是单元测试新手,我只是想知道如果一个方法在内部调用自己的公共方法来计算返回值,会怎么样,如下所示: 我正在为它编写单元测试,我的问题是:我应该使用特定的整数值来匹配结果和期望值吗

  • 问题内容: 我想知道是否有一种方法可以计算div中的行数。假设我们有一个像这样的div: 取决于许多因素,div可以包含一行,两行或什至四行文本。脚本有什么办法知道吗? 换句话说,自动中断完全可以在DOM中表示吗? 问题答案: 我坚信现在不可能了。是的,但是。 IE7的getClientRects实现完全符合我的要求。尝试刷新它以改变窗口宽度,并查看第一个元素中的行数如何相应变化。这是该页面中ja

  • 我开始学柏树了。我有一个4行表(有一类可更新的)。我可以这样验证行数: 这很好,但看起来很尴尬,因为我只想计算长度,并不需要访问行中的内容,我假设做一件事比做4件事要快。 如果我记录所选内容(不确定还可以叫它什么): 它以的形式出现,我不太确定如何解构它,这向我表明我完全错了。 如果我尝试: 我得到的 如果我尝试: 我得到 。我不知道从这里去哪里。这似乎是一件非常常见的事情。

  • 问题内容: 是否可以考虑到其他地方(例如在标记中)进行的常规设置,继承的值等来检测DOM元素的计算结果? 与框架无关的方法会很好,因为我正在开发一个可以独立运行的脚本,但这当然不是必需的。 背景:我正在尝试调整CKEditor的字体选择器插件(在此处提供源),以便它始终显示当前光标位置的字体大小(而不是仅在具有显式设置的,这是当前行为中)。 问题答案: 您可以尝试使用非标准IE 属性,否则,可以查

  • 问题内容: 我需要分离并计算arraylist中有多少个相同的值,并根据出现的次数进行打印。 我有一个名为digits的arraylist: 我创建了一个将每个值分开并将其保存到新数组的方法。 之后,我得到了一个名为数字的新数组。我在此数组上使用排序 和我的ArrayList看起来像这样: 它具有: 我需要根据数字的多少来打印出数字字符串,所以它看起来应该像这样:1354678290 问题答案: