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

Cypress函数中异步set完成后如何正确返回获取到的结果值

问题原因

Cypress 所有内置命令(cy.visit、cy.get等)都是异步入队执行的,不会阻塞后续同步代码运行。你写的同步return逻辑会在Cypress命令实际执行前就把初始值-10返回,才会出现控制台先打印返回值、后打印元素实际文本的错乱顺序。

修复方案

不要用外部变量存值再同步返回,顺着Cypress的链式调用机制返回命令链,在用例里通过.then()拿到最终计算值即可。

改造取值函数

直接返回cy.get()生成的命令链,在链的回调里返回你要提取的元素文本:

function getValues(date) {
  cy.visit('http://localhost/page1');  
  return cy.get(".total").then((span) => {
    const totalValue = span.text().trim() // 建议加trim去掉文本前后多余空白
    console.log("Values: " + totalValue)
    return totalValue
  })
}

改造测试用例调用逻辑

不要用同步变量直接接函数返回值,在命令链的.then()回调里拿到实际值后,再执行后续断言、逻辑处理:

it('Testing values', () => {
  getValues(startDate).then(totalValues => {
    console.log("Total values: " + totalValues)
    // 所有依赖totalValues的逻辑、断言都要写在这个回调内
    // 示例断言:expect(Number(totalValues)).to.equal(2.5)
  })
})
注意事项
  • 不要强行给Cypress用async/await写法,Cypress自身的命令队列已经内置了时序管控,顺着链式调用写就不会出现时序错乱
  • 所有依赖页面异步渲染、异步取值的逻辑,都必须放在对应命令的.then()回调内部,不要写到命令链外侧,否则一定会出现取值早于渲染完成的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 10:36:38