1

这是我得到的编译错误:

 error TS2339: Property 'waitForElementVisible' does not exist on type 'signinPage'

这是登录页面:

export class signinPage{
constructor(){
     emailInput: {
        selector: 'input[type=email]';
      };
      passwordInput: {
        selector: 'input[name=password]';
      };
      signinButton: {
        selector: 'button[type=submit]';
      };
}

signin(email, password){
    return this.waitForElementVisible('@emailInput')
      .setValue('@emailInput', email)
      .setValue('@passwordInput', password)
      .waitForElementVisible('@signinButton')
      .click('@signinButton')
    }


}

我认为它不知道“这个”是什么。我在 Typescript 文档( https://www.typescriptlang.org/docs/home.html)中找不到任何相关内容

这是从一个工作的 JavaScript 项目转换而来的。JavaScript 版本如下所示:

const signinCommands = {  
  signin: function(email, password) {
    return this.waitForElementVisible('@emailInput')
      .setValue('@emailInput', email)
      .setValue('@passwordInput', password)
      .waitForElementVisible('@signinButton')
      .click('@signinButton');
  }
};

module.exports = {   
  commands: [signinCommands],
  elements: {
    emailInput: {
      selector: 'input[type=email]'
    },
    passwordInput: {
      selector: 'input[type=password]'
    },
    signinButton: {
      selector: 'input[type=button]'
    },
  }
};

TypeScript 课程告诉我可以使用 JavaScript 文件。这根本不是真的,因为这个文件在 Typescript 上下文中不起作用。那里有很多错误信息。

4

2 回答 2

3

Nightwatch.js 是一个 JavaScript 库。JavaScript 库不包含类型信息。为了让 TypeScript 能够理解waitForElementVisible并存在其他守夜功能,您应该通过运行以下命令来安装类型信息:

npm install --save-dev @types/nightwatch

然后不需要 PlayMa256 指定的解决方法。

于 2018-10-05T17:22:10.753 回答
-1

您必须明确告知其定义并在打字稿中启动 waitForElementVisible

export class signinPage{
    waitForElementVisible: (value?: string) => any;
    constructor(){
         emailInput: {
            selector: 'input[type=email]';
          };
          passwordInput: {
            selector: 'input[name=password]';
          };
          signinButton: {
            selector: 'button[type=submit]';
          };
          this.waitForElementVisible= () => {}
    }

    signin(email, password){
        return this.waitForElementVisible('@emailInput')
          .setValue('@emailInput', email)
          .setValue('@passwordInput', password)
          .waitForElementVisible('@signinButton')
          .click('@signinButton')
    }
}
于 2018-10-05T15:18:05.100 回答