如何使用css使用量角器元素从组件中获取元素

时间:2018-10-10 21:18:19

标签: javascript typescript protractor

我需要单击元素中的所有“复选框”。我正在尝试使用element.all(by.css) 但是我不知道是谁将路径传递给我的CSS。

我正在尝试:

 for(let index = 0; index < limit; index ++){ 
    const check = element.all(by.css('input[type=checkbox]')).get(index); 
    check.click();  
}

但是我需要从特定面板中单击以下检查:标题为“ Cargo”的p-tabpanel或id = ui-tabpanel-6

的所有输入复选框

如何将整个路径传递给CSS?

HTML

<p-tabpanel _ngcontent - c32="" header="Cargo">

    <div class="ui-tabview-panel ui-widget-content ng-star-inserted ui-helper-hidden" 
        role="tabpanel" id="ui-tabpanel-6" 
        aria-hidden="true" aria-labelledby="ui-tabpanel-6-label">

        <label _ngcontent - c34="" class="control-label-radio">
            <input _ngcontent - c34="" type="checkbox"> Conhecimento - Escolaridade - Nível superior em Administração
        </label>

3 个答案:

答案 0 :(得分:0)

  

但是我需要从特定面板中单击这些检查:标头为“ Cargo”的p-tabpanel

添加header ="Cargo"作为根以形成嵌套选择器:

css('p-tabpanel[header=Cargo] input[type=checkbox]')

答案 1 :(得分:0)

您可以使用element.all().map()返回checkbox click Promise数组。然后使用Promise.all(<promise array>)等待所有复选框的点击完成。

let promiseList = element.all(
        by.css('p-tabpanel[header="Cargo"] input[type=checkbox')
    )
    .map((it)=>{
        return it.click();
    });

Promise.all(promiseList)
// Promise is native API of nodejs > 8, please use nodejs 8 or higher.

答案 2 :(得分:0)

您可以尝试以下代码:

element.all(by.css('input[type=checkbox]'))
.then(function (allCheckBoxes) {
  for(let i=0;i<allCheckBoxes.length;i++){
   allCheckBoxes[i].click();
  }
}

我们对所有复选框都做出了承诺,然后对其进行迭代,然后逐个单击它们。