2016-06-01 11 views
0

現在、私たちのチームは、AngularJSで書かれたソフトウェアプロジェクトのために、分度器を使用してテストを行っています。 特定のテストでは、以前に保存した値が実際に保存されているかどうかを確認するために、ドロップダウンボタンから値を取得する必要があります。アイテムng-repeatのgetText()は空の文字列を返します

this.Then(/^the profile is saved under the name (.*)$/, function (presetName, callback) { 
    element.all(by.repeater('preset in dropDown.presets')).each(function(element, index){ 
     console.log("Index: ", index); 
     element.getText().then(function(name){ 
      console.log("Text of element: ", name);  //name is empty string 
     }); 
    }); 
    callback("Error, presetName was not found!"); 
}); 

対応するHTML::

<div class="btn-group" uib-dropdown> 
     <button id="presetList" type="button" class="btn btn-primary" uib-dropdown-toggle 
       style="min-width:100px" ng-disabled="presets.length == 0"> 
      {{dropDown.selected ? dropDown.selected : ('PRESETS.SELECT_TEXT' | translate)}} 
      <span class="caret"></span> 
     </button> 
     <ul uib-dropdown-menu role="menu" class="listOfPresets"> 
      <li role="menuitem" ng-repeat="preset in dropDown.presets"> 
       <a href ng-click="setSelected(preset)"> 
        {{preset}} 
       </a> 
      </li> 
     </ul> 
    </div> 

我々はすでに以前の記事(here)で見てきたように、これは動作しません

コードは次のようです。 element.getAttribute('value')を試しましたが、これはどちらも動作しませんが、これはFAQで提案されています。 要素がそこにあることを知っています(カウントプリント1)。テスト終了後も要素を見ることができますが、これらのエントリの名前を取得する際に問題があります。

ご協力いただきましてありがとうございます。

答えて

0

最初にドロップダウンを開いてから値を取得する必要があるようです。これで私たちの問題は解決しました。 分度器の最終コード:

this.Then(/^the profile is saved under the name (.*)$/, function (presetName, callback) { 
      world.pressButtonById('presetDropdownToggle'); 
      var presetOptions = element.all(by.id('presetOption')); 
      var presetNames = presetOptions 
       .map(function (preset, index) { 
        return preset.getText(); 
       }); 
      expect(presetNames).to.eventually.include(presetName).and.notify(callback); 
     }); 
関連する問題