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

问题描述

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

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

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

登录页面.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);
 });

标签: typescriptprotractorcucumberpageobjects

解决方案


在您的规范文件中创建一个函数

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

现在在你的中添加这个函数,beforeEach()这样你的类就会为每个it().

beforeEach(){
await initializePageObjects();
}

希望对你有帮助


推荐阅读