typescript - 如何在每个场景之前重新初始化量角器中的页面对象?
问题描述
我正在使用带有黄瓜和 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);
});
解决方案
在您的规范文件中创建一个函数
initializePageObjects() {
var loginPage: LoginPage= new LoginPage();
}
现在在你的中添加这个函数,beforeEach()
这样你的类就会为每个it()
.
beforeEach(){
await initializePageObjects();
}
希望对你有帮助
推荐阅读
- spring-boot - Springboot 应用程序只能从 keycloak 获取最多 100 条记录
- mysql - Sequelize 从模型中未指定的列中获取数据
- javascript - Rangy 选择在 Microsoft Edge 上不起作用
- javascript - 使 _children 在数据树中不可选择 - Tabulator React
- memory-leaks - 在 LLVM LLI 解释器上禁用内存异常
- php - 电子邮件连接的基本联系表格,我该如何设置?没有php经验
- azure - Azure DevOps 中的构建管道和发布管道有什么区别?
- android - Flutter:http.get()未处理的异常:FormatException:意外字符(在字符1处)
- javascript - Redux saga 事件通道在另一个 saga 执行后终止
- reactjs - 如何通过单击反应js从一个组件到另一个组件获取setstate值