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

Cypress如何点击元素子集实现保留首项的批量删除测试

表格批量删除保留首项的Cypress测试实现

场景说明

当前开展表格批量删除功能测试,为校验防误删逻辑、避免操作后清空全部条目,测试要求执行删除后保留第一条数据。由于表格每一行的选择器完全一致,需要在获取元素集合后做过滤,现有全量删除代码如下:

cy.get('[data-cy="item"]').click({multiple: true })
cy.contains('button', 'Delete selected').click()

实现逻辑

核心思路是拿到所有行的元素集合后,过滤掉第一条(索引为0的项),只选中剩余条目执行删除,最后增加断言校验剩余条目数量,确保结果符合预期。

写法1:用伪类快速过滤(推荐,代码更简洁)

直接用Cypress支持的jQuery选择器:first排除首项,再执行批量选中:

// 获取所有条目,过滤掉第一条要保留的项后,选中剩余所有条目
cy.get('[data-cy="item"]')
  .not(':first')
  .click({ multiple: true })

// 点击批量删除按钮
cy.contains('button', 'Delete selected').click()

// 断言校验:删除后表格只剩1条条目
cy.get('[data-cy="item"]').should('have.length', 1)

写法2:遍历判断索引(适配特殊DOM结构场景)

如果页面DOM结构特殊,伪类选择器匹配不准,可以遍历元素集合,跳过索引为0的首项,只点击其余项:

cy.get('[data-cy="item"]')
  .each(($row, index) => {
    // 跳过第一条(索引0),其余项逐个点击选中
    if (index !== 0) {
      cy.wrap($row).click()
    }
  })

cy.contains('button', 'Delete selected').click()

// 断言校验剩余条目数量
cy.get('[data-cy="item"]').should('have.length', 1)

注意事项

  • 删除操作后的长度断言是必须项,不能仅依赖前面的选中逻辑判断测试结果,避免元素加载异常、选中逻辑失效时漏测问题
  • 如果表格首行是表头不是数据行,只需要把跳过的索引从0改成对应第一条数据的索引即可

内容的提问来源于stack exchange,提问作者Seeker

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 15:57:28