在量角器中返回函数值时未定义
undefined while returning a function value in protractor
我有一个函数 returns 一个值:
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
之前在日志中显示它。
有什么建议吗?
你得到 undefined
因为这是 each()
returns (returns nothing), 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 中的选项索引。无论如何,这是你在处理 select->option
结构时可以考虑切换到的东西:
我有一个函数 returns 一个值:
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
之前在日志中显示它。
有什么建议吗?
你得到 undefined
因为这是 each()
returns (returns nothing), 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 中的选项索引。无论如何,这是你在处理 select->option
结构时可以考虑切换到的东西: