我正在尝试创建一个方法,该方法在给定特定索引的下拉选择器中返回选项的字符串。我想然后调用该方法并将字符串存储在变量中。注意:在量角器测试中调用函数。
这是我的代码:
returnStringDropDownValue = function(elementId, index) {
var returnValue;
var options = element(by.id(elementId)).findElements(by.tagName('option'))
.then(function(options){
returnValue = options[index].getText();
});
return returnValue;
};
var x = returnStringDropDownValue('myId' ,1);
每当我调用此方法时它返回undefined。我是javascript和量角器的新手,你能帮忙吗?
答案 0 :(得分:1)
这是inherent issue with async code in JavaScript。该值将在then
内的某个稍后点填充。函数返回后,then
实际上是运行。你需要回复承诺:
returnStringDropDownValue = function(elementId, index) {
return element(by.id(elementId)).findElements(by.tagName('option'))
.then(function(options){
return options[index].getText();
});
};
然后在您想要使用时打开它:
returnStringDropDownValue().then(function(value){
// use value here
});
答案 1 :(得分:-2)
试试这个:
function returnStringDropDownValue(elementId, index) {
return document.getElementById(elementId).options[index].value;
}