如何使用赛普拉斯在一段时间后检查元素是否存在

时间:2020-08-06 19:33:41

标签: javascript cypress

我刚好在柏树上,遇到了一个问题。我需要检查收到的信件并单击。我立即收到信件的情况很简单,我检查该元素是否存在,然后对信件进行敲门。我用过这样的东西

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

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

您可以使用通过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();