Как проверить, существует ли элемент через определенное время с помощью Cypress - PullRequest
0 голосов
/ 06 августа 2020

Я недавно на кипарисе и столкнулся с проблемой. Мне нужно проверить полученное письмо и щелкнуть по нему. В случае получения письма сразу же, просто проверяю наличие этого элемента и нажимаю на письмо. Я использовал что-то вроде этого

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

Но я не понимаю, как я могу проверить письмо, если я получу его, например, через 2 минуты. Какое логическое условие я должен создать?

Ответы [ 2 ]

1 голос
/ 07 августа 2020

Просто добавьте 2-х минутный тайм-аут. Как только элемент появляется, тест проходит успешно, если он не появляется через 2 минуты, тест не проходит.

cy.get("button[data-cy=appDrawerOpener]", { timeout: 120000 }) // in ms
  .click();
0 голосов
/ 06 августа 2020

Вы можете использовать функцию, которая рекурсивно вызывает себя с 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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...