Cypress重复选择器优化:两段代码行为是否一致?
两段Cypress代码的行为对比
这两段代码核心目的一致,都是验证.images容器下的图片是否可见,但细节上存在几点差异:
验证范围不同:
第一段代码明确指定验证第1、2、3张图片,仅针对这三个元素;第二段代码会遍历.images下的所有img元素,不管页面后续是否新增图片,都会自动纳入验证范围。断言机制不同:
第一段使用Cypress内置的.should('be.visible'),自带重试等待机制——如果元素初始状态不可见,会在超时时间内(默认4秒)反复重试断言,直到元素可见或超时;第二段用的是Chai的expect($el).to.be.visible,没有重试逻辑,获取元素后立即断言,若元素正处于加载状态,可能直接断言失败。
如果你想兼顾代码简洁性、保留重试机制,同时和第一段保持完全一致的验证范围(仅前3张),可以这样优化:
it('Check all logos if visible', () => { cy.get('[class="images"] img').slice(0, 3).each(($el) => { cy.wrap($el).should('be.visible') }) })
内容的提问来源于stack exchange,提问作者Noel
相关产品推荐
相关产品推荐

