2016-11-16 19 views
1

我有一個20個按鈕的表 - 其中一半被禁用,另一半被啓用。是否有可能過濾出啓用的按鈕,然後點擊for循環中的所有按鈕? (我想要單擊的元素 - > class =「fa fa-check」) 我有過濾禁用按鈕的問題。如何篩選量角器中啓用的按鈕?

禁用的按鈕具有屬性「禁用」,其值爲「禁用」。這是啓用和禁用按鈕之間的唯一區別。

  for (var i = 0; i < numberOfRows; ++i) { //numberOfRows 
       var button = element.all(by.repeater('tulemus in noue')).get(i); 
       button.getAttribute('disabled').then(function(status) { 
        if (I dont know how to verify the right status) { 
          $$('.fa-check').get(i).click(); 
          console.log('enabled element clicked'); 
        } else { 
         console.log(status); 
         console.log('element is disabled'); 
        } 
       }); 
      } 

HTML code for two buttons

回答

2

可以使用每個()迭代上的陣列元件,而使用用於在javascript循環。你可以按照下面的代碼:

element.all(by.repeater('tulemus in noue')).each(function(button,index){ 
      button.getAttribute('disabled').then(function(status) { 
       if(!status&&index=0){ 
        button.click();//click if button is enabled 
       } 
       else { 
        console.log(status); 
        console.log('element is disabled'); 
       } 
      }); 
     }); 
+0

太棒了,它幾乎適合我。現在我有一個問題,我沒有提到過。每行有4個啓用元素,我想單擊每行中的第一個啓用元素。目前測試點擊其中的每一個。 –

+0

@SanderLepik酷。當然,我也可以幫助解決這個問題。可以過去的UI頁面? –

+0

以下是html的鏈接:https://www.upload.ee/image/6355342/Capture1.PNG 我已經用紅色箭頭標記了已啓用的按鈕。 所以我必須單擊列表中的每個第四個啓用的元素。 以下是UI的圖片:https://www.upload.ee/image/6355357/Capture3.PNG 4個禁用元素和4個啓用元素,我只需要點擊'Jah'按鈕 @SureshSalloju –

1

您還可以使用filter()方法來達到同樣的,

element.all(by.repeater('tulemus in noue')).filter(function(button){ 
    return button.isEnabled().then(function(isEnabled){ 
     return isEnabled; 
    }) 
}).each(function(enabledButton){ 
     enabledButton.click(); 
}) 
0

您應該使用isEnable量角器功能。這將返回一個布爾值,其中按鈕被啓用或不啓用。 應用於你的代碼是:

var enabledButtons = element.all(by.repeater('tulemus in noue')) 
.filter(button => { return button.isEnabled() }); 

有你有所有啓用的存儲元素的數組enabledButtons在頁面按鈕。你現在可以使用它們,或者繼續過濾它們。例如,你可以只過濾像這樣的可見按鈕:

var visibleButtons = enabledButtons.filter(button => { return button.isDisplayed() })); 

希望它有幫助。