Cypress如何定位携带指定属性的number类型input输入框
Cypress定位该input元素的方案
先明确前提:该input属于MUI组件,class属性中的1102、1141是构建时自动生成的动态哈希值,会随版本更新变化,不能作为定位依据。下面是几种稳定的定位方式:
- 基于现有稳定属性组合定位
如果当前页面只有这一个符合条件的数字输入框,直接组合type、min等固定属性即可:
// 基础属性组合 cy.get('input[type="number"][min="1"]') // 增加aria属性过滤,精度更高 cy.get('input[type="number"][min="1"][aria-invalid="false"]')
- 结合父元素/关联元素定位
如果页面存在多个相同属性的数字输入框,可以通过外层唯一的父容器、或者关联的label文本定位:
// 外层父容器有固定标识时的写法,此处.fixed-parent-class替换为实际的父容器固定class/id cy.get('.fixed-parent-class').find('input[type="number"]') // 有对应label文本时的写法,此处"采购数量"替换为实际的label文本 cy.contains('label', '采购数量').parent().find('input[type="number"]')
- 官方推荐最优方案(可修改前端代码时使用)
给该input添加测试专用的data-testid属性,前端代码修改为:
<input data-testid="goods-count-input" aria-invalid="false" type="number" min="1" class="MuiInputBase-input-1102 MuiInput-input-1141" value="1">
Cypress侧直接通过测试id定位,完全不受其他属性变更影响:
cy.get('[data-testid="goods-count-input"]')
内容的提问来源于stack exchange,提问作者Marcin Nowicki
相关产品推荐
相关产品推荐

