2016-06-01 7 views
1

分度器を備えたAngularJsリピータのチェックボックスをチェックするのが難しいです。レピータでチェックボックスをチェックする方法

モデルは次のようになります。

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

このようなビュー:

<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> 

アムそうのような分度器でリピーター取得:

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

をチェックしようこのようなチェックボックスをオンにしますが、テストを実行するとチェックしていないようです:

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

答えて

2

そして、このようなチェックボックスをチェックしようとしているが、私は、テストを実行すると、それをチェックしていないよう:

あなたがリピーター項目をクリックしているためである

からdiv要素を、代わりにinput子要素をクリックする必要があります。

することはできチェーン単一の式で.all().element()呼び出し:

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

alecxeはいつものように、正しいです:) また、この構文を試してみてください、私は$を使用することを好む: this.environments.first()$( "入力[ngのモデルは、* = '環境']"。 )。クリック(); – Xotabu4

1

のチェックボックスをクリックして以下のコードを使用してみてください。

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); 
    } 
}) 
関連する問題