2015-05-13 14 views
14

Mam problemy z używaniem kątomierza. Mam naprawdę dziwny stan ui-routera, w którym ciężko przejść inne elementy, aby rozpocząć pracę ze stroną. Czy jest jakiś sposób, aby powiedzieć kątomierzowi, aby poczekał, aż element wreszcie pojawi się w DOM? Niewidoczny/wyświetlany, ale faktycznie utworzony? Wciąż próbuję użyć oczekiwania na element, ale wyraźnie nie można go wybrać.Kątomierz czeka na element w DOM

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

Odpowiedz

34

powinieneś móc korzystać browser.wait wraz z presenceOf ExpectedCondition:

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

Niezły pomysł, aby nazwać to "do"! Czytelność ma znaczenie. – alecxe

+0

Czy jest to dostępne tylko z Kątomierza 2.0? –

+0

@ user2875134 Nie wiem. –

8

kątomierz włączyła ExpectedCondition za wyraźną czekać który pozwala czekać na element pewnego okresu czasu. Powinieneś być w stanie wykonać następujące czynności

var EC = protractor.ExpectedConditions; 

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

pierwszy parametr browser.wait to funkcja, jeżeli musimy poczekać do momentu pojawienia się elementu niezależnie od czasu, możemy użyć poniższego kodu, Jeśli chcesz ograniczyć czas oczekiwania do określonego czasu, podaj czas jako drugi parametr "browser.wait"

browser.wait(function() { 
    return element(by.css("#edudrop1")).isPresent()});