量角器/ JavaScript - 从选择下拉列表返回字符串的函数

时间:2014-12-09 22:04:10

标签: javascript string jasmine promise protractor

我正在尝试创建一个方法,该方法在给定特定索引的下拉选择器中返回选项的字符串。我想然后调用该方法并将字符串存储在变量中。注意:在量角器测试中调用函数。

这是我的代码:

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和量角器的新手,你能帮忙吗?

2 个答案:

答案 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)

试试这个:

CODEPEN

  function returnStringDropDownValue(elementId, index) {
      return document.getElementById(elementId).options[index].value;
  }