如何在Protractor中的select元素中返回可用选项列表?

时间:2017-05-24 22:08:14

标签: javascript protractor

我正在尝试使用Protractor检索select元素中的所有可用选项。我无法弄清楚如何做到这一点,因为我是一个JavaScript初学者,因此无法确定如何返回数组而不是承诺。

我试过这个:

getOptions = function () {
    var self = this;
    var availableOptions = [];

    return this.selector.click().then(function () {
        self.selectorOptions.then(function (options) {
            options.forEach(function (option) {
                option.getAttribute("value").then(function (value) {
                    availableOptions.push(value);
                });
            });
        });
    }).then(function () {
        return availableOptions;
    });
};

这会返回一个promise而不是我想要的数组。我也试过这个:

getOptions = function () {
    var self = this;
    var availableOptions = [];

    this.selector.click().then(function () {
        self.cloudletTypeOptions.then(function (options) {
            options.forEach(function (option) {
                option.getAttribute("value").then(function (value) {
                  availableOptions.push(value);
                });
            });
        });
    });

    return availableOptions;
};

当我这样做并从测试中调用该方法并尝试打印结果时,它是'未定义'。我需要做些什么来确保定义返回值并且是一个数组?除此之外,我如何强制承诺解决?

1 个答案:

答案 0 :(得分:0)

根据我的理解,您正在寻找map()

  

将地图功能应用于ElementArrayFinder中的每个元素。   回调接收ElementFinder作为第一个参数和。{   索引作为第二个arg。

getOptions = function () {
    var self = this;

    return this.selector.click().then(function () {
        return self.selectorOptions.map(function (option) {
            return option.getAttribute("value").then(function (value) {
                return value;
            });
        });
    });
};