我不确定我是否在我的TypeScript和Protractor代码中使用异步/等待正确的方法。如果你看到下面的代码,规范说等待并调用页面对象,而该对象又是async / await。页面对象调用另一个方法,它再次是async / await。这是正确的实施吗?有没有最佳做法?我觉得我正在使用async / await到处。
规格:
await login.loginTomySiteTools();
页面对象:
async loginTomySiteTools(): Promise<void> {
await this.helper.enterText(this.email, this.mySuperApp.userID);
await this.helper.click(this.btnNext);
}
帮手:
async enterText(element: WebElement, textToEnter: string): Promise<void> {
await browser.sleep(1000);
await element.sendKeys(textToEnter);
}
看起来很奇怪,从我的理解来看,你正在以正确的方式使用它。所有浏览器操作都包含Promise(需要等待),然后使用Page Object Model,我们在页面对象中声明的所有函数(通常包含浏览器操作)都需要等待,这正是Protractor的本质。我们最终为同样的行动做了很多等待。
我实际上不久前问了一个similar question,我不确定这些问题是否足够相似,不能标记为重复,所以我暂时不会标记它。
就最佳实践而言,我认为您采取的方法很好。