Проблема связана с разрешением обещаний, я передаю xPath для всех элементов для поиска вместе со строкой для поиска, и я хотел бы, чтобы элемент был возвращен. Вот код:
export class Library {
static findListItem(xPath: string, findItem: string): any {
let z = 0;
const allItemsXPath = xPath.split('[X]');
const itemXPath = xPath.split('X');
console.log(xPath + ' : ' + findItem);
const itemList = element.all(by.xpath(allItemsXPath[0] + allItemsXPath[1])).map(function (item) {
return item.getText();
});
itemList.then(function (itemText) {
console.log(itemText.length);
for (let k = 0; k < itemText.length; k++) {
itemFound = true;
console.log(itemText[k] + ' : ' + findItem);
if (itemText[k] === findItem) {
z = k + 1;
console.log('found ' + z);
}
}
}).then(() => {
console.log(itemXPath[0] + z + itemXPath[1]);
// element(by.xpath(itemXPath[0] + z + itemXPath[1])).click();
return element(by.xpath(itemXPath[0] + z + itemXPath[1]));
});
};
Работает закомментированная строка для нажатия. Он может увидеть элемент и нажать на него. Я хотел бы вернуть элемент вызывающей стороне, которая затем щелкнет.
Если возврат находится не в разделе .then, то возврат происходит слишком быстро и z = 0. Как сейчас, ничего не возвращается.