簡體   English   中英

如何使用css使用量角器元素從組件中獲取元素

[英]how to get element from an component using protractor element by css

我需要單擊元素中的所有“復選框”。 我正在嘗試使用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>

但是我需要從特定面板中單擊這些檢查:標頭為“ Cargo”的p-tabpanel

添加header ="Cargo"作為根以形成嵌套選擇器:

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

您可以使用element.all().map()返回checkbox click承諾數組。 然后使用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.

您可以嘗試以下代碼:

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

我們得到所有復選框的保證,然后遍歷它們並逐個單擊它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM