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

如何在Cypress中获取日期选择器值并实现日期输入

解决Cypress日期选择器输入无效的问题

问题分析

你的代码存在两个核心问题:

  1. 方法参数不匹配:clickexpirydate方法仅定义了一个date参数,但测试用例中调用时传入了两个参数('type=date'和'2023-01-07'),导致实际传入的日期参数错误,自然无法正确输入。
  2. 原生日期输入框的交互问题:对于原生<input type="date">元素,直接使用.type()有时会因为控件的原生行为导致输入失效,更可靠的方式是直接设置元素的value属性。

修正后的代码示例

1. 调整SettingPage类

export class SettingPage {
  doc_expirydate = '#txtDocExpiryDate'

  // 修正参数,同时优化日期输入逻辑
  setExpiryDate(date) { 
    // 直接设置value属性,适配原生date输入框
    cy.get(this.doc_expirydate).invoke('val', date)
    // 触发change事件,确保页面感知到日期变更
    cy.get(this.doc_expirydate).trigger('change')
  }

  // 获取当前显示的日期
  getExpiryDate() {
    return cy.get(this.doc_expirydate).invoke('val')
  }
}

2. 修正测试用例调用

import { SettingPage } from "./Pages/setting_page"
const settingpage = new SettingPage()

it('Setting_Page', function () {
  // 直接传入符合YYYY-MM-DD格式的目标日期
  settingpage.setExpiryDate('2023-01-07')

  // 验证日期是否正确设置
  settingpage.getExpiryDate().should('eq', '2023-01-07')
})

额外说明

  • 原生type="date"输入框要求value属性必须是YYYY-MM-DD格式,确保传入的日期符合该规范。
  • 如果你的日期选择器是自定义组件(而非原生input),则需要根据组件的交互逻辑调整,比如点击日历面板选择日期,但从截图判断你的控件是原生日期输入框,上述方案适用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 21:30:58