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

Cypress测试时上传MP4到模态框后点击Add按钮无法关闭问题

问题根因

你代码的核心问题是异步逻辑执行顺序错误:文件上传属于异步任务,写在cy.fixture回调外的Add按钮点击代码会优先于上传完成执行,此时Add按钮还处于未激活状态,点击自然不会触发关闭模态框的逻辑。另外你上传MP4时指定的encoding参数配置错误,也可能导致文件上传失败,阻塞后续操作。

修复后代码

// 点击添加视频按钮
newStoryPage.getAddVideoToStory().click({force: true})
// 显式等待模态框加载完成,替换无意义的硬等待
newStoryPage.getDragAndDropFiles().should('be.visible')

cy.fixture('sample-mp4.mp4','binary').then(mp4 => {
  const files = [{ 
    fileName: 'sample-mp4.mp4', 
    fileContent: mp4, 
    mimeType: 'video/mp4', 
    encoding: 'binary' // 修正编码配置,二进制文件不能使用utf8编码
  }]
  // 执行拖拽上传
  newStoryPage.getDragAndDropFiles().attachFile(files, {
    subjectType: 'drag-n-drop', 
    events: ['dragenter', 'drop'] 
  })
  // 等待Add按钮可点击后再执行点击操作
  newStoryPage.getAddButton()
    .should('be.visible')
    .and('be.enabled')
    .click()
})

补充排查方案

如果修改后问题仍然存在,可以按以下步骤排查:

  • 点击Add按钮时添加{force: true}参数,避免模态框退场动画未结束、元素被判定为不可交互的问题
  • 增加上传成功断言,比如先校验模态框内是否渲染出视频预览、上传文件名等内容,确认上传逻辑执行完成后再点击按钮
  • 如果业务逻辑中上传视频后会触发前端校验、转码等耗时操作,需要对应增加等待逻辑,避免处理过程中执行后续操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 08:15:08