如何用async await返回Element.all(by by)?

问题描述 投票:0回答:2

我想建立一个自定义方法,它将等待元素并返回元素.all(by)

我使用了 ElementArrayFinder 的返回类型,但它抛出了如截图所示的错误,谁能指导一下这里的问题是什么?我在这个方法中使用了async 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

typescript protractor
2个回答
0
投票

希望这能帮助你的需求。

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);
}

0
投票

这是我做的 - 单一的方法来等待与返回的元素.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;
}

谢谢大家,谢谢大家的花时间!

© www.soinside.com 2019 - 2024. All rights reserved.