В настоящее время наша команда пишет тесты с использованием Protractor для нашего программного проекта, написанного в AngularJS. Для конкретного теста мы должны извлечь значения из раскрывающегося списка, чтобы проверить, действительно ли сохранено предыдущее сохраненное значение.getText() на элементах ng-repeat возвращает пустую строку
Код выглядит следующим образом:
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), и мы можем даже увидеть элемент после завершения теста, но у нас все еще возникают проблемы с получением имен для этих записей.
Любая помощь приветствуется!