2015-04-01 10 views
5

Quindi sto cercando di ottenere un valore stringa da restituire dal valore di un elemento sulla risoluzione di questa promessa. Voglio passare un valore stringa grezzo a un'altra funzione che sto costruendo all'interno di un test del goniometro.Impossibile restituire la stringa dal valore dell'elemento nel test del goniometro

Questo è l'elemento:

<div style='hidden' > 
    <input id="group-sendgrid-hidden-input" ng-model='groupCode' value='dangyo' > 
</div> 

Sto cercando un modo per ottenere sia a valore modello o il valore di attributo (sia funzionerà). Il valore del modello potrebbe anche essere migliore.

questo è il mio tentativo di risolvere la promessa qui e restituire un risultato:

// first get the element driver object 
var groupCode = element(by.id('group-sendgrid-hidden-input')); 

// next resolve a promise provided by this element 
groupCode.getAttribute('value').then(function(value){ 

    console.log('should be a string: ' + value); 

    return value; 
}); 

Qui il console.log('should be a string: ' + value); restituisce sempre null per la value e nulla che possa fare per risolvere questo sembra. Sono sicuro che sto facendo qualcosa di sbagliato perché sono nuovo per il goniometro e questo sembra semplice. Qualcun altro sperimenta questo comportamento?

+3

Solo un controllo di integrità: esiste un solo elemento con 'id =" group-sendgrid-hidden-input "' nella pagina? – alecxe

+0

Sì, ce n'è solo uno. Ho appena effettuato una ricerca. – usumoio

+0

Potrebbe avere qualcosa a che fare con il div nascosto? Solo un altro controllo di integrità, poiché ovviamente restituirebbe un errore 'Elemento non visibile'. –

risposta

4

è troppo grande per un commento e sarebbe ancora una supposizione, ma come di fare un custom "Expected Condition" e attesa per valore di attributo value dell'elemento input non essere null:

var hasNotNullValue = function(elementFinder) { 
    return function() { 
     return elementFinder.getAttribute("value").then(function(value) { 
      return !!value; // is not null 
     }); 
    }; 
}; 

var groupCode = element(by.id('group-sendgrid-hidden-input')); 
browser.wait(hasNotNullValue(groupCode), 10000); 

groupCode.getAttribute('value').then(function(value){ 
    console.log('should be a string: ' + value); 
}); 

È può anche utilizzare evaluate() per recuperare il valore del modello:

groupCode.evaluate('groupCode').then(function(value) { 
    console.log(value); 
}); 
+0

Ok, questo è eccellente. Questo funziona. Nella mia altra domanda ho intenzione di aggiornare che la risposta è qui. Grazie. – usumoio

Problemi correlati