【发布时间】:2019-09-27 02:54:46
【问题描述】:
上下文:我正在更新 e2e 测试以使用 async/await。当尝试将函数(返回类型为 promise.Promise )更新为异步并从测试中调用它时,将导致 TS 错误。
当前实现:
export function waitUntilElementIsVisible(element: ElementFinder): promise.Promise<WebElement> {
browser.wait(ExpectedConditions.presenceOf(element))
return browser.wait(ExpectedConditions.visibilityOf(element))
}
尝试过的解决方案:
export async function waitUntilElementIsVisible(element: ElementFinder): Promise<WebElement> {
await browser.wait(ExpectedConditions.presenceOf(element))
return browser.wait(ExpectedConditions.visibilityOf(element))
}
函数调用如下:
it('should wait until element is visible, async () =>
await waitUntilElementIsVisible( error_page)
expect(web element displayed)
})
我面临以下问题:
Type '{}' is not assignable to type 'WebElement'. Property 'getDriver' is missing in type '{}'.
我这样做正确吗?任何建议将不胜感激!
【问题讨论】:
-
您能否发送对象
error_page的样子? -
这意味着这不是
browser.wait(ExpectedConditions.visibilityOf(element))返回的内容。因此,您的类型注释很可能是错误的。 -
@PrzemyslawJanBeigert error_page 对象看起来像:
class ErrorPage { getErrorPage(): ElementFinder { return $('.error-page') } }await waitUntilElementIsVisible(ErrorPage.getErrorPage()) -
您在
return声明中错过了await。应该是return await browser.wait(ExpectedConditions.visibilityOf(element))
标签: typescript selenium-webdriver promise protractor