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

Cypress:嵌套函数替代while循环时this对象未定义报错解决

解决Cypress递归函数中this报错的问题

问题原因

你写的是箭头函数,箭头函数不会绑定自身的this,它的this继承自外层作用域。而这里functionName是通过const声明的独立函数,并非某个对象的方法,用this.functionName()调用本身就是错误的,再加上严格模式下外层作用域的this可能为undefined,所以TypeScript会提示“Object is possibly undefined”。

解决方案

直接使用函数名进行递归调用,无需借助this,修改后的代码如下:

const functionName = () => {
  if (a !== b) { // 推荐使用严格不等运算符`!==`代替`!=`,避免隐式类型转换问题
    functionName(); // 直接调用函数本身
  } else {
    cy.get(".selector").click();
  }
};

额外注意(Cypress异步场景适配)

如果a和b是从页面中获取的异步值,直接递归可能会因为Cypress的异步命令队列导致逻辑异常,建议结合cy.then()处理异步流程:

const checkConditionAndClick = () => {
  // 假设a和b是页面元素的文本值,先获取它们的实际值
  cy.get("#element-a").invoke("text").then(aVal => {
    cy.get("#element-b").invoke("text").then(bVal => {
      if (aVal !== bVal) {
        checkConditionAndClick(); // 满足条件时递归检查
      } else {
        cy.get(".selector").click();
      }
    });
  });
};

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 00:45:36