如何在每个场景之前重新初始化量角器中的页面对象?

How to re-initialize page objects in protractor before each scenario?

我正在将量角器与黄瓜和 trypescript 一起使用。我将所有页面对象定义为 类。在步骤定义中,我初始化了每个需要的页面对象,并将其用于各种断言或操作。 运行宁一个场景时,设置工作正常。但是,如果我想 运行 更多场景,我需要找到一种方法来为每个场景重新初始化页面对象,否则量角器将使用先前初始化的对象和为第一个浏览器实例获取的元素,并且我会得到一个错误。

关于如何做到这一点有什么想法吗?我试图查看 github 上的项目示例,但找不到任何可以解决我的问题的内容。

这是我的设置中的一个小例子:

loginpage.po.ts:

export class LoginPage{
    ...     
    async login(username:string,password:string){
        await this.enteremail(username);
        await this.clickNext();
        await this.enterPass(password);
        await this.clickSignIn();
   ...
}
    }

common.steps.ts:

import { LoginPage} from '../pageobjects/loginPage.po';
...
var loginPage: LoginPage= new LoginPage();

Given('I have the URL ', async () => {
    await browser.get(config.baseUrl);
    await expect(loginPage.isAtSignIn()).to.eventually.be.true;
});

 Given ('I login', async () => {
     await loginPage.login(config.params.username, config.params.password);
 });

在规范文件中创建函数

initializePageObjects() {
var loginPage: LoginPage= new LoginPage();
}

现在在您的 beforeEach() 中添加此函数,以便您 class 为每个 it() 初始化。

beforeEach(){
await initializePageObjects();
}

希望对你有帮助