yasmine_yang

导航

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)    收藏  举报