使用量角器单击复选框

时间:2015-02-26 21:42:15

标签: javascript jquery angularjs protractor

没有唯一的型号,ID,标签名称。我怎么想检查/点击复选框?

html /代码是:

<div ng-repeat="column in $parent.columns.standardMetrics" class="ng-scope">
      <label class="ng-binding">
        <input type="checkbox" ng-model="column.visible" name="" class="ng-pristine ng-valid">
        uCPM
      </label>
    </div>

</div><div ng-repeat="column in $parent.columns.standardMetrics" class="ng-scope">
      <label class="ng-binding">
        <input type="checkbox" ng-model="column.visible" name="" class="ng-pristine ng-valid">
        CPM
      </label>
    </div>

除名称旁边的标签外,其中大约有15个具有相同的名称。我到处搜索,看看量角器是否允许你按标签找到元素。

我的尝试是通过by.buttonText,by.partialButtonText,by.css和by.binding找到的。我对此没有运气。

我的目的是传递一个标签名称,我可以切换特定的复选框。 所以就像element(by.css(header)).click(); 其中header是传入的内容。

5 个答案:

答案 0 :(得分:1)

我强烈建议使用ID。使用指令将ID添加到每个复选框,然后您可以这样:

element(by.css('input[myid="checkbox_x"]')); // where x is defined in a loop

答案 1 :(得分:0)

您可以使用by.xpath()

element(by.xpath('//input[@ng-model = "column.visible" and following-sibling::text() = "' + label + '"]'));

答案 2 :(得分:0)

我相信会有更好的答案。我刚开始学习量角器:)你可以尝试通过索引点击它。

3 =位置。

element.all(by.repeater('column in $parent.columns.standardMetrics').get(3).element(by.css('[ng-model="column.visible"]')).click();

答案 3 :(得分:0)

编辑:错过了文本属于标签而不是输入。
这应该工作:
元件(by.xpath( “//标签[文本()= 'uCPM'] /输入”));

答案 4 :(得分:0)

为元素分配dinamic id:

<div ng-repeat="column in $parent.columns.standardMetrics" class="ng-scope">
      <label id="label{{$index}}" class="ng-binding">
        <input type="checkbox" ng-model="column.visible" name="" class="ng-pristine ng-valid">
        uCPM
      </label>
</div>

然后在量角器上:

element(by.id('label0')).click();

P.S。只是读到你不能改变HTML,因为网站不是你的。试试这个:

var first= element.all(by.repeater('column in $parent.columns.standardMetrics')).get(0);
first.get(0).then(function(el) {
  el.click();
});