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

使用cypress-react-selector定位MUI MenuItem失败求助

解决Cypress无法通过cypress-react-selector找到MUI MenuItem的问题

核心原因

用props: {value: option}匹配时,由于option是对象,cypress-react-selector会做引用相等比较,但组件上的value对象和你传入的option是不同引用,因此匹配失败。

解决方案

1. 使用函数式props匹配(推荐)

通过自定义函数做值层面的匹配,替代引用匹配:

import 'cypress-react-selector';
Cypress.Commands.add('filterSection', (option: any) => {
  cy.react('MenuItem', {
    props: (props) => props.value?.id === option.id
  }).click()
})

只要MenuItem的value.id和传入的option.id一致,就能精准匹配到目标组件。

2. 确保MenuItem已渲染

点击MenuItem前,必须先展开下拉菜单,让MenuItem挂载到DOM中:

// 先触发下拉菜单展开
cy.react('Select').click()
// 再调用自定义命令点击目标项
cy.filterSection({id: 123})

3. 检查组件displayName

确认MUI MenuItem的displayName为MenuItem(默认是该值),如果项目中对组件做了二次封装,需改成封装后的组件名称,比如CustomMenuItem。

4. 直接用DOM属性匹配(备选)

如果react组件选择方式不生效,可以直接基于DOM属性定位:

// 通过data-value属性匹配(需确认DOM上存在该属性)
cy.get(`[data-value='{"id":123}']`).click()
// 或通过菜单项文本匹配
cy.contains('目标菜单项的文本内容').click()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 08:27:26