【问题标题】:How to check checkbox in repeater with protractor如何用量角器检查中继器中的复选框
【发布时间】:2016-06-01 03:21:07
【问题描述】:

我在使用量角器检查 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();

【问题讨论】:

    标签: angularjs testing protractor end-to-end


    【解决方案1】:

    并试图像这样检查复选框,但是当我运行测试时它似乎没有检查它:

    那是因为您正在单击中继器项目 - div 元素,但我怀疑需要单击 input 子元素。

    您可以在一个表达式中链接.all().element() 调用:

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

    【讨论】:

    • alecxe 是正确的,像往常一样 :) 也试试这个语法,我更喜欢使用 $ : this.environments.first().$("input[ng-model*='environments']" ).click();
    【解决方案2】:

    尝试使用以下代码单击复选框。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多