在使用gettext()函数并在其他文件中使用它时,量角器发生未定义的错误

时间:2019-03-23 10:05:53

标签: javascript protractor angular-promise

我在InputBoxActions.js文件中编写了一个实用程序函数,用于从量角器的输入字段中获取文本,如下所示:

   this.getTextFromInputBox = function (element) {
        if (typeof element !== 'undefined') {
            element.isDisplayed().then(function () {
                element.isEnabled().then(function () {

                    element.getText().then(function(text){
                        return text;
                    })


                });
            });
        }
    };

但是,在测试规范文件中使用相同的功能时,我得到的文本值未定义。在这里,我将函数称为:

browserActions.goto(url);
      var searchElement = findElements.byXpath("//input[@type='search']");
      inputBoxActions.type(searchElement, 'angular');
      var text = inputBoxActions.getTextFromInputBox(searchElement);
      console.log(text);

我得到的结果是:

Started
undefined
(node:1412) [DEP0005] DeprecationWarning: Buffer() is deprecated due to security and usability issues. Please use the Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() methods instead.
.


1 spec, 0 failures
Finished in 6.082 seconds

1 个答案:

答案 0 :(得分:0)

您最里面的return语句仅将值返回给调用它的函数,然后未使用。

-> element.getText().then(function(text){
     return text;
   });

如果要以这种方式实现此目标,则需要返回所有嵌套的nest。

this.getTextFromInputBox = function (element) {
    if (typeof element !== 'undefined') {
        return element.isDisplayed().then(function () {
            return element.isEnabled().then(function () {
                return element.getText().then(function (text) {
                    return text;
                })
            });
        });
    }else{
        throw new Error(`${element} is undefined`);
    }
};

想象一下,一群人互相完成一些工作。最终,您的人正在执行工作,但没有将其传递回需要的地方。