2016-07-04 12 views
0

分度器を使用したe2eのテストでは、ファイルからデータを取り出し、そのデータがUIに存在するかどうかを確認しています。存在する場合は、それをクリックします。分度器の比較に基づいて要素をクリック

ページには約10の章があり、ファイルには2つの章(chapterNameで示されています)があります。ファイル内のchapterNamesがUIにあるかどうかを確認したい場合は、それを1つずつクリックします。以下のコードで作業していますが、ループを行う方法がわかりません

分度器でこれを行う方法は?

element.all(by.repeater('chapter in chapters')).filter(function (ele,index) { 
       return ele.getText().then(function(text){ 

       return text === chapterName; 

      }); 
      }).click(); 

答えて

0

約束の中でループを達成するには、クロージャー関数を使用する必要があります。下記のコード例を見てください。 .filterの

element.all(by.repeater('chapter in chapters')).filter(element=> { 
       return ele.getText().then(text=> text === chapterName); 
      }); 
     }).map(element=> element.click()); 

結果は、条件に一致する要素のみとなりますので、あなたは新しいArrayElementFinderを取得します、と私は正しいですが、私はあなたがほとんど存在していると思うこと

function clickChapterByName(){ 
    var chapterNames= ['chapter-1','chapter-2','chapter-3','chapter-4','chapter-5'] 
    for(i=0;i<chapterNames.length;i++){ 
     function closure(chapterName) { 
      element.all(by.repeater('chapter in chapters')).filter(function (ele,index) { 
       return ele.getText().then(function(text){ 
        return text === chapterName; 
       }); 
      }).click(); 
     } 
     closure(chapterNames[i]) 
    } 
    } 
0

かなりわかりません

0

あなたの要件に応じて、ループ演算を行う必要があります。これは、分度器apiで利用可能なeach()メソッドで実現できます。

コードスニペット:

element.all(by.repeater('chapter in chapters')). 
      each(function (ele, index) {//for looping purpose 
        ele.getText().then(function(text){ 
             if(text == inputChapterName){ 
             ele.click();//click chapter is 
             } 
            }); 
      }) 
関連する問題