Cypress执行表格单元格非空校验时如何排除指定列
表格非空校验简化实现方案
核心思路
不需要逐列编写重复的校验逻辑,只需要在批量选取单元格时,直接过滤掉允许为空的目标列单元格,再统一执行非空断言即可,代码冗余度可以降到最低。
具体实现
可以根据编码习惯选以下任意一种写法:
写法1:选择器阶段直接排除目标列(推荐,代码最简洁)
利用jQuery的:not()伪类选择器,在获取元素阶段就把允许为空的列的单元格过滤掉,后续直接统一断言:
// 注意把.cdk-column-Nullable替换成你实际业务中允许为空的列对应的cdk-column-xxx类名 cy.get('tbody[role="rowgroup"] tr td:not(.cdk-column-Nullable)').each(($cell) => { // 用trim()处理前后空白字符,避免空格、换行被误判为有效内容 expect($cell.text().trim()).to.not.be.empty })
写法2:遍历阶段判断跳过目标列
如果需要更灵活的排除逻辑(比如后续要加多个排除列、加动态判断规则),可以在遍历单元格的时候判断当前单元格是否属于要排除的列,命中则直接跳过校验:
// 统一维护需要排除的列类名列表,后续新增排除列直接往数组里加即可 const excludeColumns = ['cdk-column-Nullable'] cy.get('tbody[role="rowgroup"] tr td').each(($cell) => { // 判断当前单元格是否属于排除列,是则跳过 const isExclude = excludeColumns.some(className => $cell.hasClass(className)) if (isExclude) return expect($cell.text().trim().length).to.be.at.least(1) })
方案优势
- 不需要逐列重复写
cy.get()+each()+断言的重复逻辑,代码量大幅减少 - 后续调整校验规则只需要维护排除列的配置即可,维护成本低
- 统一加了文本trim处理,比原来直接判断DOM元素empty的校验逻辑更严谨,避免空白字符导致的误判
内容的提问来源于stack exchange,提问作者bobby bobby
相关产品推荐
相关产品推荐

