上下文:我正在更新e2e测试以使用异步/等待。尝试将函数(返回类型为promise.Promise
当前实施:
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 '{}'.
我这样做正确吗?任何建议将不胜感激!
答案 0 :(得分:0)
函数应如下所示:
export async function waitUntilElementIsVisible(element: ElementFinder): Promise<any> {
await browser.wait(ExpectedConditions.visibilityOf(element))
}
首先,如果我们仔细观察visibilityOf code,我们会发现它本身会调用presenceOf
,因此您不需要进行额外的检查。
第二,在这种情况下不需要返回任何内容,而且,browser.wait docs says会返回!webdriver.promise.Promise<T>
,但我认为它可能不是WebElement
,而是会返回ExpectedConditions.visibilityOf
返回什么。
答案 1 :(得分:0)
不是答案,但需要比评论中更多的空间
我很困惑,您说您正在调用这样的函数
it('should wait until element is visible, async () =>
await waitUntilElementIsVisible( error_page)
expect(web element displayed)
})
那么你的对象是
class ErrorPage {
getErrorPage(): ElementFinder {
return $('.error-page')
}
}
现在,我认为一切都很清楚,ErrorPage是对象({}
),但是您需要一个elementFinder。所以您需要的是
ErrorPage.getErrorPage() // instead of error_page
但是在评论中,您说的是这种称呼方式
await waitUntilElementIsVisible(ErrorPage.getErrorPage())
那么您使用哪种方式? error_page
或ErrorPage.getErrorPage()