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

在Cypress中如何比较输入框值与系统日期时间?

问题:验证输入框值与系统日期时间相等失败

你的代码存在几个关键问题,导致断言失败,以下是修正方案:

问题分析

  1. 输入框值获取方式错误:输入框(input类元素)的内容存储在value属性中,invoke('text')只能获取元素的文本节点内容,无法拿到输入框的实际输入值。
  2. 类型与格式不匹配:直接用dayjs()(dayjs对象)和输入框的字符串值比较,类型完全不匹配;且你日志中使用的DD/MM/YYYY格式,与步骤描述的YYMMDD hhmmss格式不一致,必须统一格式后再比较。

修正后的代码

根据你步骤描述的YYMMDD hhmmss格式,修正代码如下:

And("Count name is filled in the format YYMMDD hhmmss", () => {
    const dayjs = require('dayjs')
    // 定义统一的日期时间格式
    const dateFormat = 'YYMMDD HHmmss'
    const expectedDateTime = dayjs().format(dateFormat)
    
    cy.log(`预期日期时间:${expectedDateTime}`)

    // 用invoke('val')获取输入框的实际值
    companionPage.countNameInputBox().invoke('val').then((inputValue) => {
        // 去除首尾空白后与格式化后的系统日期比较
        expect(inputValue.trim()).to.equal(expectedDateTime)
    })
})

如果输入框实际格式是你日志里的DD/MM/YYYY,只需将dateFormat改为'DD/MM/YYYY'即可。

额外注意事项

  • 若系统日期使用UTC时区,需将dayjs()改为dayjs.utc(),确保时区一致。
  • 若输入框的值是动态生成的(比如有延迟),可以使用should断言自动重试,简化代码:
    companionPage.countNameInputBox().should('have.value', expectedDateTime)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 10:34:58