繁体   English   中英

在量角器中返回函数值时未定义

[英]undefined while returning a function value in protractor

我有一个返回值的函数:

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);
});

当我调用上面的函数时,值显示为undefined,并在日志中显示它,然后调用checkValue

有什么建议么?

你是undefined因为这是each()返回(什么都不返回), 实现

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

让我们使用map()来区别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->option构造时,您可能会考虑切换到这一点:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM