【问题标题】:undefined while returning a function value in protractor在量角器中返回函数值时未定义
【发布时间】:2015-05-06 16:21:10
【问题描述】:

我有一个返回值的函数:

checkValue = function(Name){
    var tempIndex=-1;
    var nameIndex=0;
    return selectElement.all(by.tagName('option')).each(function (element) {
        return element.getText().then(function(text){
            tempIndex++;
            if(text.toString().indexOf(Name)!=-1){
                nameIndex=tempIndex;
                return nameIndex;
            }else{
                return nameIndex;
            };
        });
    });

这是在另一个函数中调用的:

checkValue(Name).then(function(value){
    logger.info("value ::"+value);
});

当我调用上述函数时,该值显示为未定义,并且在调用 checkValue 之前在日志中显示。

有什么建议吗?

【问题讨论】:

    标签: javascript testing protractor end-to-end


    【解决方案1】:

    你得到undefined,因为这是each()返回的(什么都不返回),implementation

    ElementArrayFinder.prototype.each = function(fn) {
      return this.map(fn).then(function() {
        return null;
      });
    };
    

    让我们以不同的方式处理它,使用map()

    return selectElement.all(by.tagName('option')).map(function (option, index) {
        return {
            'text': option.getText(),
            'index': index
        };
    }).then(function (options) {
        for (var i = 0; i < options.length; i++) {
            if (options[i].text === Name)
            {
                return options[i].index;
            }
        }
    });
    

    我仍然不确定问题的动机方面,为什么您需要选择中的选项索引。无论如何,这是您在处理 select-&gt;option 构造时可以考虑切换到的东西:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-02
      • 1970-01-01
      • 2014-04-01
      相关资源
      最近更新 更多