如何计算赛普拉斯断言中的 DOM 元素

新手上路,请多包涵

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

我需要比较两个总计以得出 Cypress 断言。

我可以选择我需要的选项,并用 each() 遍历它们,并以此方式增加一个计数器。然而,它是异步的,也是一个笨拙的解决方案。我确定我的 cy.get() 生成的对象具有长度属性,但我似乎无法理解它。

这是我期望工作的事情之一。它将 undefined 记录到控制台。

 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() 产生了正确的选择元素。

如果我这样做:

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

然后它将遍历每个选项。但它是异步的,因此在此流程中不是很有帮助。

原文由 charliefortune 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 322
1 个回答

也许您可以利用 Cypress.$ 。但请注意,该文档并未准确地将其宣传为测试工具:

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

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

 selector = 'div[data-cy-type="group-component"]:first select[name=group_id] option'
count = Cypress.$(selector).length

原文由 Arnaud P 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏