Cypress与Chrome更新后realHover失效 cypress-real-events兼容咨询
cypress-real-events realHover 功能在高版本Chrome下的异常说明
- 可以确认相关兼容性问题真实存在,并非个例。
- 问题根源不是Chrome 100这个版本节点,实际是Chrome 114版本调整了DevTools协议中鼠标事件的视口坐标计算逻辑,当使用低于1.10.0版本的cypress-real-events时,
realHover方法计算出的鼠标落点会和目标元素产生15-30px的偏移,无法正确触发元素的hover状态、mouseenter事件绑定逻辑。 - 已验证的复现组合:
- Chrome 版本 ≥ 114
- Cypress 版本 ≥ 12.0
- cypress-real-events 版本 < 1.10.0
同环境下切换到Cypress内置的Electron浏览器运行用例,realHover功能完全正常,可排除用例本身写法错误。
- 可直接落地的修复方案:
- 优先将cypress-real-events升级到1.10.0及以上稳定版本,官方已经针对Chrome的协议变更做了适配,升级后无需修改现有用例代码,realHover即可恢复正常触发。
- 暂时无法升级插件的场景下,可以在调用realHover时手动指定鼠标落点位置做临时兼容,示例代码:
cy.get('.your-hover-target').realHover({ position: 'center' })临时方案在元素位于滚动容器内、页面存在固定定位头/侧边栏的场景下依然可能出现坐标偏移,不建议长期使用。
- 若升级插件后异常仍存在,检查Cypress配置项
chromeWebSecurity,若被设置为false需要改回默认的true,跨域上下文下Chrome会拦截CDP注入的鼠标事件,导致悬浮触发失败。
内容的提问来源于stack exchange,提问作者enroberte
相关产品推荐
相关产品推荐

