retryOnError
public static async retryOnError<T>(callback: () => Promise<T>, retryCount: number = 5, waitPeriod: number = 1000): Promise<T> {
let tryCount = 0;
while (true) {
tryCount++;
try {
return await callback();
} catch (error) {
if (tryCount >= retryCount) {
throw error;
} else {
await browser.sleep(waitPeriod);
}
}
}
}
How to use?
public static async clickElementWhenClickable(
selectortype: string, selector: string, text?: string,
scope?: string
): Promise<void> {
let item: ElementFinder;
if (selectortype === 'xpath') {
item = Helper.locateElementWithXpath(selector);
} else if (selectortype === 'css') {
item = Helper.locateElementWithinScope(selector, text, scope);
}
await Helper.retryOnError(async () => {
await Helper.scrollToElementWhenPresent(item);
await browser.wait(
ExpectedConditions.elementToBeClickable(item),
Helper.elementWaitTimeout,
'Element not clickable.\n' + item.locator().toString()
);
await item.click();
});
}
posted on 2019-09-17 16:24 yasmine_yang 阅读(155) 评论(0) 收藏 举报
浙公网安备 33010602011771号