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

如何在Cypress条件语句中使用'exist'判断元素是否存在?

Cypress 判断元素存在并执行对应操作的正确方式

你不能直接用.should('exist')配合if语句实现需求,原因有两点:

  1. Cypress命令是异步执行的,cy.get('.mt-5').should('exist')不会返回布尔值,无法作为if的判断条件;
  2. cy.get()默认会等待元素出现(默认超时4秒),若元素不存在,这条命令会直接触发超时错误,中断测试流程。

正确实现方式

通过同步检查DOM元素的方式判断,以下是两种可靠写法:

写法一:借助cy.get('body')确保DOM就绪后检查

cy.get('body').then(($body) => {
  // 同步检查目标元素是否存在
  if ($body.find('.mt-5').length > 0) {
    cy.get('.mt-5')
      .find('li')
      .then(($listItems) => {
        const listLength = $listItems.length;
        cy.wrap(listLength).as('listLength');
      });
  }
});

写法二:直接使用Cypress.$同步查询DOM

// 同步检查元素是否存在(需确保页面已加载完成)
if (Cypress.$('.mt-5').length > 0) {
  cy.get('.mt-5')
    .find('li')
    .then(($listItems) => {
      const listLength = $listItems.length;
      cy.wrap(listLength).as('listLength');
    });
}

这两种写法都会在元素不存在时跳过后续的列表长度获取逻辑,不会触发超时错误,符合你“无列表则继续执行”的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 18:22:15