Javascript 使用量角器单击复选框

Javascript 使用量角器单击复选框,javascript,jquery,angularjs,protractor,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

没有唯一的型号、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>

uCPM
CPM
除了名字旁边的标签外,还有大约15个名字相同的。我到处搜索,看看量角器是否允许您按标签查找元素

我的尝试是通过by.buttonText、by.partialButtonText、by.css和by.binding查找。我在这方面运气不好

我的目的是传入一个标签名,以便切换特定的复选框。 这就像
元素(by.css(header)).click()
其中header是传入的内容。

您可以通过.xpath()使用


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

3=位置

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

我强烈建议使用ids。使用指令将ID添加到每个复选框中,然后可以执行如下操作:

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

编辑:缺少文本属于标签而不是输入的信息。
这应该有效:

元素(by.xpath(“//label[text()='uCPM']]/input”)

为元素分配一个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>
p、 只要读到你不能改变HTML,因为网站不是你的。试试这个:

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

因此它将是
元素(by.xpath('//input['+header+'='+label']'))
?@wtosh刚刚意识到应该检查以下同级文本。检查更新。标签的示例值为
uCPM
CPM
。我传入的变量将转到哪里?@wtosh label是此处的变量。复制并粘贴“label”,并用标题替换“label”,但给了我一个错误:意外的字符串放入
”“]”)
在代码处。没有任何id。您在我的问题中看到的是确切的代码。我无法添加id,此网站不是我的。如何找到我传递的变量的确切索引?
element(by.id('label0')).click();
var first= element.all(by.repeater('column in $parent.columns.standardMetrics')).get(0);
first.get(0).then(function(el) {
  el.click();
});