You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:17:04