Машинопись / транспортир. цикл через ElementFinderArray и разрешение обещаний - PullRequest
0 голосов
/ 19 июня 2019

Я хочу сделать следующее в транспортире (но с машинописью):

let cellsTxt = await Promise.all(cells.map(cell => cell.getText()));

Здесь я хочу пройти через ElementArrayFinder, чтобы получить текст каждого элемента.

Пока япридумал следующее, что является многословным и не работает:

let cellsTxt: Array<string> = [];
let cellsTxtPromise: Array<promise.Promise<string>> = [];
cells.forEach((cell: ElementFinder, i:number) => {
  cellsTxtPromise[i] = cell.getText();
})
cellsTxt = await Promise.all(cellsTxt);

Я приветствую любой указатель на правильное решение.

спасибо!

РЕДАКТИРОВАТЬ: ЭТО ЕСТЬНЕ СООТВЕТСТВУЮЩИЙ ВОПРОС;ПОСКОЛЬКУ ВОПРОС, КОТОРЫЙ Я ПРОБИЛ, вызван ДРУГОЙ ЧАСТЬЮ КОДЕКСА.

1 Ответ

1 голос
/ 19 июня 2019

Я думаю, что есть несколько подходов для архивирования одной и той же цели:

1) let cellsTxt = await cells.getText(); // you can call getText() on ElementArrayFinder

2) let cellsTxt = await cells.map(cell => await cell.getText()));

3) let cellsTxt = await Promise.all(cells.map(cell => cell.getText()));

4) let tmp = []; 
   let cellsTxt = await cells.each(cell => tmp.push( await cell.getText() ))
                             .then(()=> return tmp;)
...