这是我得到的编译错误:
error TS2339: Property 'waitForElementVisible' does not exist on type 'signinPage'
这是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上下文中不起作用。那里有很多错误信息。
答案 0 :(得分:3)
Nightwatch.js是一个JavaScript库。 JavaScript库不包含类型信息。为了让TypeScript理解waitForElementVisible
和其他守夜功能,您应该通过运行以下命令来安装键入信息:
npm install --save-dev @types/nightwatch
然后不需要PlayMa256指定的解决方法。
答案 1 :(得分:-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')
}
}