如何在Cypress中使用dayjs正确转换日期为指定格式
问题分析与解决方案
问题出在两个核心点:
- 原代码未接收
invoke('text')返回的文本参数,导致text变量未定义(语法错误); - dayjs默认将
11/04/2023按MM/DD/YYYY(月/日/年)格式解析,把11识别为11月、4识别为4号,和你实际的DD/MM/YYYY(日/月/年)格式不匹配。
修正后的代码
cy.get("#eff-date").invoke('text').then((text) => { // 提取冒号后的日期部分并去除前后空格 const dateStr = text.split(':')[1].trim(); // 明确指定输入格式为DD/MM/YYYY,再转换为目标格式 const edate = dayjs(dateStr, 'DD/MM/YYYY').format('DD-MMM-YYYY'); // 可添加断言验证结果是否符合预期 expect(edate).to.equal('11-Apr-2023'); });
关键细节说明
- 给
then回调传入参数text,才能正确获取元素的文本内容; - 通过
dayjs(dateStr, 'DD/MM/YYYY')强制指定输入日期的解析规则,确保日、月、年被正确识别; - 调用
.trim()清理日期字符串的前后空格,避免因多余空格导致解析失败。
内容的提问来源于stack exchange,提问作者Anil Tiwari
相关产品推荐
相关产品推荐

