量角器打字稿错误-TypeError:无法读取未定义的属性“用户名”

时间:2019-09-10 11:07:08

标签: typescript protractor pageobjects

我正在尝试使用Typescript在量角器中编写登录测试。在页面对象中,我已经定义了元素,并且在引用它们时出现错误。我用Javascript编写了相同的测试,并且运行良好。我不确定我在做什么错

login.po.ts文件


export class LoginPage {
      username = element(by.id('userName'));
      password = element(by.id('password'));
      loginbtn = element(by.id('login'));
      loginmsg = element(by.id('login-message'));
}
import { browser } from "protractor";
import {LoginPage} from '../PageObjects/login.po';

describe('Login', function () {
let loginpg: LoginPage;
  beforeEach(() => {
    let loginpg = new LoginPage();
});

it('should show incorrect credentials error', async () => {
  browser.get("https://example.com/");
  loginpg.username.sendKeys("test@test.com");
  loginpg.password.sendKeys("fsdf");
  loginpg.loginbtn.click();
  expect(loginpg.loginmsg.toEqual('Incorrect username or password'));
})
});

1 个答案:

答案 0 :(得分:1)

需要分配值,而不是在beforeEach函数中声明新变量。

describe('Login', function () {
  let loginpg: LoginPage; // --> declare
  beforeEach(() => {
    loginpg = new LoginPage(); // --> assign
  });
  //...
});

您必须调用getText方法来获取元素的文本。 另外,您错过了)

,如果您禁用了控制流,则必须为每个命令添加await

解决方案:

describe('Login', function () {
  let loginpg: LoginPage;
  beforeEach(() => {
    loginpg = new LoginPage();
  });

  it('should show incorrect credentials error', async () => {
    await browser.get("https://example.com/");
    await loginpg.username.sendKeys("test@test.com");
    await loginpg.password.sendKeys("fsdf");
    await loginpg.loginbtn.click();

    expect(await loginpg.loginmsg.getText()).toEqual('Incorrect username or password'));
  });
});