量角器 JavaScript 函数调用 returns null

Protractor JavaScipt function call returns null

我试图从 it() 调用我的函数,但我总是得到 return 空值。我认为我的函数将 return 变量的值返回给调用者。

文件:“helperDropDownBx.js”

module.exports = function() {
  function myFunctionTest() {
    var reTxt = null;
    try {
      browser.wait(EC.visibilityOf(id_dropDownValue), 30000);
      id_dropDownValue.getAttribute("value").then(function(text) {
        retTxt = text;
      });
    } catch(err) {
      throw new Error(err.message);
    }
    return retTxt;
  }
        
  return{
    myFunctionTest : myFunctionTest
  }
}

文件:“TestHelpers.js”

const myHelper = require("../pages/helpers/helperDropDownBx.js");
describe("[Test Helpers]", function(){
    var myHelperObj = new myHelper();

    it('testing Helpers', function() {        
        try{
            //attempt#1, but not working
            var retVal = myHelperObj.myFunctionTest();
            retVal.then(function (value){
               console.log(value);
            )};

            //attempt#2, but not working
             myHelperObj.myFunctionTest().then(function(value){
               console.log(value);
            )};
       }catch(err){
           throw new Error(err.message);
       }
    });
});

我上面的两次尝试,总是return null

文件:“helperDropDownBx.js”

module.exports = {
  myFunctionTest: async function () {
    // this is a bad practice to start a function with wait
    // all wait should be handled after you complete an action and not before
    await browser.wait(EC.visibilityOf(id_dropDownValue), 30000); 
    return id_dropDownValue.getAttribute("value")
  }
}

文件:“TestHelpers.js”

const myHelper = require("../pages/helpers/helperDropDownBx.js");
describe("[Test Helpers]", function(){

  it('testing Helpers', async function() {        
    var value = await myHelper.myFunctionTest();
    console.log(value)
  });
});

如果你仍然好奇你需要用 .then() 做什么才能让它工作,那么像这样的东西

module.exports = {
  myFunctionTest: function() {
    return browser.wait(EC.visibilityOf(id_dropDownValue), 30000)
      .then(() => {
        return id_dropDownValue.getAttribute("value")
          .then(function(text) {
            return text;
          })
      })
  }
}

我觉得很糟糕 :)