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

Cypress中如何检查元素、点击按钮并验证元素+1?.then()顺序存疑

问题解决方法

你代码里的核心问题是错误获取了子元素数量:jQuery对象的children是方法,不是属性,直接取$container.children.length得到的是这个方法的参数个数(通常是1),而非容器内子元素的实际数量,这就导致后续断言的预期值完全错误。

修正步骤:

  1. 将$container.children.length改为$container.children().length,正确调用方法获取子元素集合的长度
  2. 可选:断言时限定在容器内查找.item,避免页面其他同名元素干扰

修正后的代码:

// Add item button found previously

cy.get('#container').then(($container) => {
  // 正确调用children()方法获取子元素集合,再取length
  const beforeLength = $container.children().length;
  if (beforeLength === 0) {
    addItemButton.click();
    // 限定在#container内查找.item,避免外部元素干扰
    cy.get('#container .item').should('have.length', 1);
  } else {
    addBlockButton.click();
    cy.get('#container .item').should('have.length', beforeLength + 1);
  }
})

额外注意点:

  • 确保addItemButton和addBlockButton的定位是准确的,点击操作确实能触发元素添加
  • 如果元素添加是异步的,Cypress的should断言会自动重试,所以不用额外加等待,但如果有特殊加载逻辑,可能需要配合cy.wait()或更精确的条件判断

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 14:27:04