【发布时间】:2018-11-09 14:25:51
【问题描述】:
我正在尝试计算 select 元素中的选项数量,以及 DOM 中某个类的元素数量。
我需要比较赛普拉斯断言的两个总数。
我可以选择我需要的选项,并使用 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++);
});
然后它将遍历每个选项。但它是异步的,所以在这个流程中不是很有帮助。
【问题讨论】:
-
我不完全理解您的问题,但这可能会有所帮助 -
cy.get('@groupSelect').children('option').then(options => expect(options.length).to.eq(otherTotal))。我不确定其他总数(DOM 中的类计数)是如何得出的,也许如果您发布更多代码,我们可以提供进一步的帮助。
标签: javascript testing cypress