您应该为一般等待创建一些辅助方法。假设您将具有以下等待功能:
async waitForDisplayed(element: ElementFinder, timeout = 20000): Promise<boolean> {
try {
return await browser.wait(element.isDisplayed());
} catch (error) {
return false;
}
}
假设您具有上述功能,则可以等待显示元素。结合检查页面是否仍在加载的功能,这非常有用。
要创建一个确定页面是否仍在加载的函数,您必须搜索页面加载时显示的某个元素或显示为最新元素之一的元素。在我们的测试套件中,我们一直在等待微调器消失。
等待页面加载示例:
async function waitForTestability(timeout = 20000): Promise<boolean> {
let spinner = element(by.css('.spinner'));
try {
await browser.wait(async function () { return !await spinner.isDisplayed(); });
return true;
} catch (error) {
return false;
}
}
然后您可以waitForDisplayed()
使用该功能修改您的功能,waitForTestability()
因此无论何时使用waitForDisplayed()
,首先测试页面是否仍在加载:
async waitForDisplayed(element: ElementFinder, timeout = 20000): Promise<boolean> {
try {
await waitForTestability();
await browser.wait(element.isDisplayed());
return true
} catch (error) {
return false;
}
}
干杯!