2015-07-01 15 views
9

Mam obiektu takich jak:

$scope.project = {name: 'whatever', description: 'blabla', another: 'another'}; 

W tym celu debugowania, i wejść w tryb repl i spróbować zobaczyć, co "projekt" ma. Kiedy definiuję zmienną projektu jak poniżej i wywołuję ją, zwraca ona mój obiekt, ale kiedy próbuję uzyskać dostęp do jego kluczy (nazwa projektu), otrzymuję niezdefiniowany. Jeśli robię Object.keys (projekt) otrzymuję metody obiektu strony, takie jak click, getAttribute, itp.

Wszelkie pomysły, w jaki sposób mogę uzyskać dostęp do oryginalnych kluczy obiektu?

Widok z boku:

<h1 id="foo">{{project.name}}</h1> 

strona testowa:

var project = element(by.id('foo')).evaluate('project'); 

Odpowiedz

12

evaluate wykorzystuje executeScript za kulisami. Zwraca ElementFinder który postanawia się do przedmiotu, którego szukasz:

var project; 
element(by.id('foo')).evaluate('project').then(function(value) { 
    project = value; 
}); 

documentation mówi:

który postanawia ocenianym ekspresji dla każdego bazowego elementu. Wynik zostanie rozwiązany jak w webdriver.WebDriver.executeScript. Podsumowując - prymitywy będą rozwiązane w taki sposób, że funkcje zostaną przekonwertowane na łańcuch znaków, a elementy zostaną zwrócone jako WebElement.

Ponadto, sprawdź Accessing Angular inside Protractor Test

Edit: błąd składni

+1

wydaje jakiś błąd składni. Powinien to być 'element (by.id ('foo')). Evaluate ('project'). Then (function (value) { project = value;});' –

+0

co oznacza "wartość"? – saruftw

+0

ocena wykorzystuje obietnicę. wartość powinna dać zwrócone dane po ocenie "projektu" – Sairam

Powiązane problemy