Как я могу вернуть element.all (by) с asyn c await - PullRequest
0 голосов
/ 29 апреля 2020

Я хочу создать собственный метод, который будет ждать элемент и возвращать element.all (by)

Я использовал тип возвращаемого значения как ElementArrayFinder, но он выдает ошибку, как показано на скриншоте, может кто-нибудь руководство в чем тут проблема? Я использую asyn c / await с этим методом

static async getElements(byEl: any): ElementArrayFinder{
    await browser.wait(Util.EC.presenceOf(element(byEl)), 30000, 'Element not found');
    return await element.all(byEl);
}

ypescript

Ответы [ 2 ]

0 голосов
/ 29 апреля 2020

Вот что я сделал - Единственный метод ожидания с возвратом element.all () и сработал нормально.

static async getElements(byEl: any): Promise<ElementFinder[]>{
    await browser.wait(Util.EC.presenceOf(element(byEl)), 30000, 'Element taking too long to appear in the DOM');
    return await element.all(byEl).asElementFinders_();
}

и в качестве потребителя мы можем использовать -

static async size(byEl: any): Promise<number>{
    return (await this.getElements(byEl)).length;
}

Спасибо всем, что уделили время!

0 голосов
/ 29 апреля 2020

Надеюсь, это поможет вам.

public getAllElements(locator: Locator): ElementArrayFinder {
    return element.all(locator);
}

public async waitForAllElements(elements: ElementArrayFinder) {
    const elFinders: ElementFinder[] = await elements.asElementFinders_();
    for (const [index, el] of elFinders.entries()) {
        await browser.wait(ExpectedConditions.presenceOf(el), 30000, 'Element not found for index ' + index);
    }
}

public async test() {
    const allElements = this.getAllElements(by.css('something'));
    await this.waitForAllElements(allElements);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...