如何为DayJS获取的当前时间添加2-3分钟容错范围?
解决方案
你没法只靠修改timeNow常量实现需求——单个时间值覆盖不了一个时间范围。正确的做法是生成允许的时间区间,再断言页面显示的时间落在这个区间内,具体代码如下:
const dayjs = require('dayjs'); // 计算时间范围的上下限(当前时间±3分钟,可按需改成2分钟) const lowerBound = dayjs().subtract(3, 'minute'); const upperBound = dayjs().add(3, 'minute'); // 获取页面时间并解析为DayJS对象,再做区间判断 cy.get('#dateTime').invoke('text').then(pageTimeText => { // 按页面显示的格式解析时间(这里对应"H:mm") const pageTime = dayjs(pageTimeText, 'H:mm'); // 断言页面时间在允许区间内,'[]'表示包含上下边界 expect(pageTime.isBetween(lowerBound, upperBound, 'minute', '[]')).to.be.true; });
关键细节说明:
- 用
subtract和add生成容错区间,替换原来的精确时间匹配逻辑; invoke('text')直接获取元素文本,避免contains的模糊匹配局限性;- 解析页面时间时明确指定格式
'H:mm',防止DayJS自动解析出错; isBetween的第四个参数'[]'表示包含边界值(比如允许9:27或9:33的情况),不需要的话可以改成'()'。
内容的提问来源于stack exchange,提问作者kkibbey
相关产品推荐
相关产品推荐

