Cypress中如何检查元素、点击按钮并验证元素+1?.then()顺序存疑
问题解决方法
你代码里的核心问题是错误获取了子元素数量:jQuery对象的children是方法,不是属性,直接取$container.children.length得到的是这个方法的参数个数(通常是1),而非容器内子元素的实际数量,这就导致后续断言的预期值完全错误。
修正步骤:
- 将
$container.children.length改为$container.children().length,正确调用方法获取子元素集合的长度 - 可选:断言时限定在容器内查找
.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
相关产品推荐
相关产品推荐

