在Cypress中不使用JavaScript统计无序列表特定文本出现次数的方法
在Cypress中无需复杂JS统计列表内特定文本出现次数的方法
当然有办法实现这个需求!不用写复杂的自定义JavaScript逻辑,咱们可以借助Cypress内置的命令和jQuery选择器来轻松搞定。
针对你给出的无序列表结构,这里有两种简洁的实现方式:
方法1:使用:contains选择器筛选(最简便)
利用Cypress支持的jQuery :contains 选择器,直接筛选出包含目标文本的列表项,再获取它们的数量:
// 统计并断言"14 May, 2018"的出现次数 cy.get('ul li') .filter(':contains("14 May, 2018")') .its('length') .should('eq', 3); // 对应示例中的3次出现 // 如果只是想获取次数而非断言,可以用.then处理 cy.get('ul li') .filter(':contains("14 May, 2018")') .its('length') .then(count => { console.log(`目标文本共出现了 ${count} 次`); // 这里可以添加其他业务逻辑 });
说明:
cy.get('ul li'):定位到所有列表项元素.filter(':contains("目标文本")'):筛选出包含指定文本的元素(注意该选择器大小写敏感).its('length'):获取筛选后元素集合的长度,也就是文本出现的次数
方法2:自定义筛选回调(更灵活,支持大小写不敏感)
如果需要忽略大小写匹配,或者有更复杂的文本匹配规则,可以用.filter()结合简单的回调函数(这只是基础JS语法,不算复杂逻辑):
cy.get('ul li') .filter((index, element) => { // 去除文本首尾空格后,转为小写进行匹配 return element.textContent.trim().toLowerCase() === '14 may, 2018'.toLowerCase(); }) .its('length') .should('eq', 3);
这种方式能应对更多场景,比如文本前后有空格、需要模糊匹配的情况。
内容的提问来源于stack exchange,提问作者aitchkhan
相关产品推荐
相关产品推荐

