2016-06-01 13 views
1

Ich habe Schwierigkeiten, ein Kontrollkästchen in einem AngularJs Repeater mit Winkelmesser zu überprüfen.Checkbox im Repeater mit Winkelmesser

Das Modell sieht wie folgt aus:

environments: [ 
       { 
        name: 'Proof of Concept', 
        checked: false 
       }, 
       { 
        name: 'Non-Production', 
        checked: false 
       }, 
       { 
        name: 'Production', 
        checked: false 
       } 
      ] 

Die Ansicht wie folgt aus:

<div class="checkbox" ng-repeat="environment in vm.assessment.environments"> 
    <label><input type="checkbox" ng-model="vm.assessment.environments[$index].checked" ng-click="vm.checkboxChanged()" ng-required="!vm.someChecked">{{environment.name}}</label> 


</div> 

Am bekommen den Repeater in Winkelmesser wie so:

this.environments = element.all(by.repeater('environment in vm.assessment.environments')); 

Und versuchen, das überprüfen Kontrollkästchen wie folgt, aber wenn ich den Test ausführen, scheint es nicht zu überprüfen:

this.environments.get(0).click(); 

Antwort

2

Und versuchen Sie das Kontrollkästchen, wie dies zu überprüfen, aber wenn ich den Test ausführen scheint es nicht, es zu überprüfen:

Das ist, weil Sie den Repeater Artikel sind klicken - das div Element, aber ich muss stattdessen auf das input Kindelement klicken, vermute ich.

Sie können Kette die .all() und .element() Anrufe in einem einzigen Ausdruck:

this.environments.first().element(by.css("input[ng-model$=checked]")).click(); 
+0

alecxe korrekt ist, wie üblich :) Auch diese Syntax versuchen, ziehe ich es $ verwenden:. this.environments.first() $ ("input [ng-Modell * = 'Umgebungen']").klicken(); – Xotabu4

1

Versuchen Sie den Code unten mit Hilfe der Kontrollkästchen klicken.

var repeaterElement = element.all(by.repeater('environment in vm.assessment.environments')) 

repeaterElement.then(function (ElementArray) { 
    for(i = 0; i < ElementArray.length; i++) { 
    ElementArray[i].all(by.tagName('input')).get(0).click(); 
    browser.sleep(1000); 
    } 
})