如何检查元素是否存在,以便在元素存在时执行某些步骤。如果元素不存在,则可以执行其他某些不同的步骤。

我尝试了以下类似的方法,但没有奏效:

Cypress.Commands.add('deleteSometheingFunction', () => { 
  cy.get('body').then($body => { 
    if ($body.find(selectors.ruleCard).length) { 
      let count = 0; 
      cy.get(selectors.ruleCard) 
        .each(() => count++) 
        .then(() => { 
          while (count-- > 0) { 
            cy.get('body') 
            // ... 
            // ... 
          } 
        }); 
    } 
  }); 
  }); 

我正在寻找一个简单的解决方案,它可以与简单的 javascript 结合
否则 block 或 那么() promise 部分

类似于 Webdriver 协议(protocol)的以下实现:
  • driver.findElements(By.yourLocator).size() > 0
  • 检查等待中的元素是否存在

  • 好心提醒。谢谢

    请您参考如下方法:

    如果您决定通过检查 .length 来执行 if 条件,我将补充一点。 cy.find 的属性(property)命令,您需要尊重 cypress 的异步特性。
    示例:
    尽管存在 appDrawerOpener 按钮,但以下条件评估为 false

        if (cy.find("button[data-cy=appDrawerOpener]").length > 0)    //evaluates as false 
    
    但是这个评估为真,因为 $body变量已在 .then() 中解析 promise 的一部分:
        cy.get("body").then($body => { 
            if ($body.find("button[data-cy=appDrawerOpener]").length > 0) {    
                //evaluates as true 
            } 
        }); 
    
    阅读更多 Cypress documentation on conditional testing


    评论关闭
    IT干货网

    微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!