Я использую поиск элементов в своем автотесте и беру имя из списка. Мой код работает, все хорошо. Но в автотесте я использую этот код несколько раз. Поэтому я решил поместить его в функцию и вызывать, когда мне это нужно. Код работает:
await driver.wait(until.elementLocated(By.className("item")), 20000);
let findItems1 = await driver.findElements(By.className("item"));
let items1 = findItems1.map(async elem => await elem.getText());
await Promise.all(items1);
let currentItem1 = findItems1[findItems1.length - 1];
await currentItem1.click();
currentName = await currentItem1.getText(); // This string operates
await Promise.all(currentName)
console.log(currentName)
Я определяю значение переменной из функции, в которой лежит обещание. Я могу нажать на этот пункт. Но когда я хочу получить текстовое обещание, строка «currentName = await currentItem1.getText ()» выдает ошибку. Хотя в моем первом коде эта строка работает. Я не понимаю, в чем может быть причина.
Код не работает:
async function findCurrentItem(){
await driver.wait(until.elementLocated(By.className("item")), 20000);
let findItems = await driver.findElements(By.className("item"));
let items = findItems.map(async elem => await elem.getText());
await Promise.all(items);
let currentItem = findItems[findItems.length - 1];
return currentItem;
}
let current = findCurrentItem();
await currentItem1.click();
console.log(current, 1) // console displays promise
let currentName = await current.getText(); // This string doesn't operate
await Promise.all(currentName)
console.log(currentName, 2) // console displays error
Ошибка:
TypeError: currentItem.getText is not a function
Что я могу сделать?