我正在尝试使用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'));
})
});
答案 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'));
});
});