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

Cypress中如何对父子元素触发鼠标悬停以点击OrangeHRM的KPI链接

方案1:原生事件触发实现(无需额外依赖)

Cypress 内置实验性hover()方法对多级联动菜单兼容性差,可按顺序触发mouseenter事件实现悬停效果,代码示例:

// 登录完成后执行以下逻辑
// 触发Performance菜单悬停
cy.get('你的Performance菜单定位器')
  .trigger('mouseenter', { force: true })
  .wait(150) // 匹配菜单展开动画时长,可按需调整
// 触发Configure子菜单悬停
cy.get('你的Configure选项定位器')
  .trigger('mouseenter', { force: true })
  .wait(150)
// 点击KPIs选项
cy.get('你的KPIs选项定位器').click({ force: true })

注:OrangeHRM演示站的菜单默认有固定ID,可直接使用#menu_performance_viewPerformanceModule定位Performance、#menu_performance_Configure定位Configure、#menu_performance_searchKpi定位KPIs。

方案2:强制修改样式跳过悬停模拟(稳定性最高)

如果不需要验证悬停交互本身,仅需要进入KPIs页面,可直接修改菜单CSS属性强制展示子菜单,完全规避hover事件触发失败的问题:

// 强制展示Performance一级子菜单
cy.get('#menu_performance_viewPerformanceModule')
  .parent()
  .find('ul.dropdown-menu:first')
  .invoke('css', 'display', 'block')
// 强制展示Configure二级子菜单
cy.get('#menu_performance_Configure')
  .parent()
  .find('ul.dropdown-menu:first')
  .invoke('css', 'display', 'block')
// 直接点击KPIs
cy.contains('KPIs').click()

方案3:使用cypress-real-events插件模拟真实操作

如果需要真实模拟用户悬停交互,可安装第三方插件cypress-real-events,它会触发系统级原生鼠标事件,兼容性远高于Cypress内置API:

  • 安装依赖:npm install cypress-real-events --save-dev
  • 在cypress/support/e2e.js中引入插件:import 'cypress-real-events/support'
  • 测试代码示例:
cy.get('#menu_performance_viewPerformanceModule').realHover()
cy.get('#menu_performance_Configure').realHover()
cy.contains('KPIs').realClick()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 12:24:06