【问题标题】:How to check if element exists after a certain time using Cypress如何使用赛普拉斯检查元素是否在一段时间后存在
【发布时间】:2020-08-06 19:33:41
【问题描述】:

我刚到 cypress,遇到了一个问题。我需要检查收到的信件并点击它。我立即收到信,这很简单,我检查存在的元素,然后在信上点击。我用过这样的东西

**cy.get("body").then($body => {
    if ($body.find("button[data-cy=appDrawerOpener]").length > 0) { 
      cy.get("button[data-cy=appDrawerOpener]")
        .click();
    }**  

但我不明白如果我在 2 分钟后收到这封信,我该如何检查。我应该创造什么逻辑条件?

【问题讨论】:

    标签: javascript cypress


    【解决方案1】:

    只需添加 2 分钟超时。元素一出现即测试成功,如果 2 分钟后仍未出现则测试失败。

    cy.get("button[data-cy=appDrawerOpener]", { timeout: 120000 }) // in ms
      .click();
    

    【讨论】:

      【解决方案2】:

      您可以使用 setTimeout 递归调用自身的函数,直到找到元素。

      function find(){
          if ($body.find("button[data-cy=appDrawerOpener]").length > 0) { 
            cy.get("button[data-cy=appDrawerOpener]")
              .click();
          } else {
            setTimeout(find, 500);//500 millisecond delay
          }
      }
      find();
      

      【讨论】:

      • 这不是你所需要的。如果元素没有出现,我正在尝试等待或重试元素可见性并且我不明白该怎么做?
      • @Sergey 你能详细说明你需要什么吗?对我来说不是很清楚。
      • @hev1 如果元素在页面上不可见,我需要重试查找元素。
      • @Sergey 我的回答就是这样,不是吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-01
      • 2018-05-26
      • 2020-09-20
      相关资源
      最近更新 更多