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

如何在Cypress中继续填写含Vue日期选择器的表单?

解决Cypress填写Vue日期选择器后下拉遮挡表单的问题
  • 点击页面空白/其他表单区域关闭下拉
    大部分Vue日期选择器(比如Element UI、Ant Design Vue的组件)支持点击外部区域关闭下拉面板。输入日期后,直接点击表单里的其他字段或者页面空白处即可:

    cy.get('#dispatch-date').type('22-10-2022')
    // 点击表单内的其他字段,替换成你实际存在的字段选择器
    cy.get('#recipient-name').click()
    

    如果没有合适的字段,也可以强制点击页面body:

    cy.get('#dispatch-date').type('22-10-2022')
    cy.get('body').click({ force: true })
    
  • 直接通过Vue实例修改绑定值
    要是能拿到日期选择器的Vue实例,可以跳过UI交互,直接修改组件绑定的日期数据:

    cy.get('#dispatch-date').then($el => {
      // 不同Vue版本可能用$el.__vue__或者Cypress.vueWrapper获取实例
      const vueComp = $el[0].__vue__
      // 替换成组件实际绑定的data字段名,比如dispatchDate
      vueComp.dispatchDate = '2022-10-22'
    })
    // 触发input事件确保表单校验生效
    cy.get('#dispatch-date').trigger('input')
    
  • 调用组件内置的关闭方法
    很多Vue日期选择器组件自带关闭下拉的方法,比如Element UI的DatePicker有hidePicker方法:

    cy.get('#dispatch-date').then($el => {
      // 组件的ref命名可能不同,需要根据实际情况调整
      const pickerComp = $el[0].__vue__.$refs.picker
      pickerComp.hidePicker()
    })
    
  • 临时禁用下拉弹出(仅测试场景)
    如果只是为了完成表单填写测试,可以先移除日期选择器的只读属性,强制输入后手动关闭下拉:

    cy.get('#dispatch-date').invoke('removeAttr', 'readonly')
    cy.get('#dispatch-date').type('22-10-2022', { force: true })
    // 替换成你日期选择器下拉面板的实际类名,比如.el-picker-panel
    cy.get('.el-picker-panel').click({ force: true })
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 11:10:41