我正在使用黄瓜和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);
});
在spec文件中创建一个函数
initializePageObjects() {
var loginPage: LoginPage= new LoginPage();
}
现在在beforeEach()
中添加此函数,以便为每个it()
初始化类。
beforeEach(){
await initializePageObjects();
}
希望它能帮到你