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

如何使用Cypress测试mat-stepper并验证步骤选中状态?

验证Mat-Stepper步骤选中状态的Cypress方案

因为mat-step是Angular Material的组件,其宿主标签不会直接渲染到最终HTML中,所以你添加的data-cy属性不会出现在DOM里。可以通过以下几种方式在Cypress中验证步骤选中状态:

方法1:通过步骤标题文本定位

如果步骤标题固定,直接通过文本找到对应的步骤头部,检查是否包含选中类:

// 替换为你的步骤标题文本
cy.contains('mat-step-header', '个人信息')
  .should('have.class', 'mat-step-header-selected');

方法2:通过步骤索引定位(顺序固定时适用)

如果步骤顺序不会变动,可通过索引直接获取步骤头部并验证:

// 验证第一个步骤是否选中(索引从0开始)
cy.get('mat-step-header').eq(0)
  .should('have.class', 'mat-step-header-selected');

方法3:自定义data-cy到可渲染元素

你可以把data-cy属性加到matStepLabel模板内的元素上,确保属性能被渲染到DOM:

<mat-step>
  <ng-template matStepLabel data-cy="step-profile-label">个人信息</ng-template>
  <!-- 步骤内容 -->
</mat-step>

然后在Cypress中通过该属性找到元素,再向上追溯到步骤头部验证选中:

cy.get('[data-cy="step-profile-label"]')
  .parents('mat-step-header')
  .should('have.class', 'mat-step-header-selected');

方法4:联动验证步骤内容(可选)

如果需要确认选中步骤的内容是否激活,可以通过步骤头部的aria-controls属性关联到内容区域:

cy.get('mat-step-header.mat-step-header-selected')
  .invoke('attr', 'aria-controls')
  .then(contentId => {
    cy.get(`#${contentId}`).should('have.class', 'mat-step-content-active');
  });

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 23:23:11