类型“{}”不可分配给类型 'WebElement'
Type '{}' is not assignable to type 'WebElement'
上下文:我正在更新端到端测试以使用异步/等待。当尝试将函数(使用 return 类型 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 '{}'.
我这样做正确吗?如有任何建议,我们将不胜感激!
函数应该如下所示:
export async function waitUntilElementIsVisible(element: ElementFinder): Promise<any> {
await browser.wait(ExpectedConditions.visibilityOf(element))
}
首先,如果我们仔细观察 visibilityOf code,我们会发现它会自己调用 presenceOf
,因此您不需要额外的检查。
其次,在这种情况下不需要return任何东西,而且,作为browser.wait docs says,它returns !webdriver.promise.Promise<T>
,但我不认为它可能是 WebElement
,它 return 是什么 ExpectedConditions.visibilityOf
return。
不是答案,但需要比评论
更多的space
我很困惑,你说你是这样调用函数的
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()
上下文:我正在更新端到端测试以使用异步/等待。当尝试将函数(使用 return 类型 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 '{}'.
我这样做正确吗?如有任何建议,我们将不胜感激!
函数应该如下所示:
export async function waitUntilElementIsVisible(element: ElementFinder): Promise<any> {
await browser.wait(ExpectedConditions.visibilityOf(element))
}
首先,如果我们仔细观察 visibilityOf code,我们会发现它会自己调用 presenceOf
,因此您不需要额外的检查。
其次,在这种情况下不需要return任何东西,而且,作为browser.wait docs says,它returns !webdriver.promise.Promise<T>
,但我不认为它可能是 WebElement
,它 return 是什么 ExpectedConditions.visibilityOf
return。
不是答案,但需要比评论
更多的space我很困惑,你说你是这样调用函数的
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()