使用量角器

时间:2015-09-08 17:15:43

标签: angularjs protractor

如何在下拉列表(select)内获取与所选选项关联的对象?

这是我的HTML:

<select ng-model="selSeason" ng-options="season as season.name for season in seasons"></select>

每个季节都是具有多个属性的对象,我需要获取与所选对象关联的对象(而不仅仅是其文本或值)。

我知道ng-repeat有类似的东西(选择第五季的名字):

element(by.repeater('season in seasons').row(4).column('name'));

by.options()选择器是否有类似内容?

由于

3 个答案:

答案 0 :(得分:3)

您可以by.options使用evaluate()

var seasonNames = element.all(by.options('season in seasons')).evaluate("season.name");
seasonNames.then(function (values) {
    console.log(values);  // array of season names is printed
});

您还可以使用filter()过滤掉所选选项:

var selectedSeasonName = element.all(by.options('season in seasons')).filter(function (option) {
    return option.getAttribute("selected").then(function (selected) {
        return selected;
    });
}).first().evaluate("season.name");

selectedSeasonName.then(function (value) {
    console.log(value);  // selected season name is printed
});

答案 1 :(得分:1)

您正在寻找的是自定义by.selectedOption定位器。

 unzip  some-zip.zip

要获得更好的说明,请阅读:https://technpol.wordpress.com/2013/12/01/protractor-and-dropdowns-validation/

答案 2 :(得分:0)

您的绑定看起来不错,您可以使用ng-model变量轻松阅读所有属性&#39; selSeason&#39;,请参阅此示例

<select ng-model="user"               
        ng-options="x as x.name for x in users track by x.id"
        class="form-control" 
        ng-required="true">
  <option value="">-- Choose User --</option>
</select> 

var id = $scope.user.id; 
var name = $scope.user.name; 
var role = $scope.user.role 

详细信息check this