web-dev-qa-db-fra.com

Le rapporteur attend que l'élément soit dans le DOM

J'ai eu du mal à utiliser Protractor. J'ai un état vraiment étrange de routeur ui où il est difficile de se démarquer d'autres éléments pour commencer à travailler avec la page. Existe-t-il un moyen de dire au rapporteur d'attendre qu'un élément apparaisse enfin dans le DOM? Non visible/affiché, mais réellement créé? Je continue d'essayer d'utiliser attendre pour l'élément, mais il n'est clairement pas disponible pour être sélectionné.

browser.driver.wait(function () {
    return elem.isDisplayed();
});
33
Tyler Pflueger

Vous devriez pouvoir utiliser browser.wait avec le presenceOf ExpectedCondition :

var until = protractor.ExpectedConditions;
browser.wait(until.presenceOf(elem), 5000, 'Element taking too long to appear in the DOM');
60
Michal Charemza

Le rapporteur a inclus ExpectedCondition pour l'attente explicite, ce qui vous permet d'attendre l'élément pendant une certaine période. Vous devriez pouvoir faire ce qui suit:

var EC = protractor.ExpectedConditions;

browser.driver.wait(function () {
    browser.wait(EC.visibilityOf(elem), 10000);
    return elem;
});
13
Saifur