我想建立一个自定义方法,它将等待元素并返回元素.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);
}
希望这能帮助你的需求。
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);
}
这是我做的 - 单一的方法来等待与返回的元素.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;
}
谢谢大家,谢谢大家的花时间!