2015-04-01 12 views
5

zurückgegeben So versuche ich, einen String-Wert aus dem Wert eines Elements auf die Auflösung dieser Versprechen zurückgegeben werden. Ich möchte einen rohen Zeichenfolge-Wert an eine andere Funktion übergeben, die ich in einem Winkelmesser-Test aufbau.Kann keine Zeichenfolge vom Wert des Elements in Winkelmesser Test

Dies ist das Element:

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

ich nach einer Möglichkeit, entweder an dem Modellwert oder den Attributwert zu erhalten (entweder funktioniert). Der Modellwert könnte sogar besser sein.

Dies ist mein Versuch, das ein Versprechen hier und kehrt um ein Ergebnis zu beheben:

// 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; 
}); 

Hier die console.log('should be a string: ' + value); immer wieder null für die value und nichts, was ich scheint dies zu beheben tun können. Ich bin mir sicher, dass ich etwas falsch mache, weil ich neu bei Winkelmesser bin und das scheint einfach. Hat sonst jemand dieses Verhalten?

+3

Nur eine Plausibilitätsprüfung - es gibt nur ein Element mit 'id = "group-sendgrid-hidden-input" 'auf der Seite? – alecxe

+0

Yup, es gibt nur einen. Habe gerade eine Suche durchgeführt. – usumoio

+0

Könnte es etwas damit zu tun haben, dass das div versteckt ist? Nur eine weitere Überprüfung der Gesundheit, da es offensichtlich einen Fehler "Element ist nicht sichtbar" zurückgeben würde. –

Antwort

4

Es ist zu groß für einen Kommentar und würde immer noch eine Vermutung, aber wie wäre es eine custom "Expected Condition" und warten Sie auf den inputvalue Attributwert des Elements machen nicht sein 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); 
}); 

Sie kann auch evaluate() verwenden, um den Modellwert abzurufen:

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

Okay, das ist ausgezeichnet. Das funktioniert. In meiner anderen Frage werde ich aktualisieren, dass die Antwort hier ist. Vielen Dank. – usumoio

Verwandte Themen