Я заметил довольно продолжительное время для завершения операции.
Я использую последнюю версию SeleniumBasi c для VBA для извлечения данных из таблицы с помощью ChromeDriver. (https://github.com/florentbr/SeleniumBasic)
Я извлекаю WebElements и перебираю их, чтобы получить текстовое значение.
Я присваиваю текстовое значение массиву типа Строка.
Эта операция занимает довольно много времени, когда у меня большой массив (1000 объектов WebElement).
Вопрос - Какой самый быстрый способ получить все текстовые значения ?
Вот мой HTML
<table class="Tables_Table_0">
<caption></caption>
<thead class="thead-inverse">
<tr>
<th class="col-md-4">
Name
</th>
<th class="text-center">
Time
</th>
<th class="text-center">
Number
</th>
<th class="text-center">
Rate
</th>
<th class="text-center">
Other
</th>
<th class="text-center">
Final
</th>
</tr>
</thead>
<tbody>
<tr class="SOME CLASS">
<td>
Name Here</a>
</td>
<td class="text-center">
123.000
</td>
<td class="text-center">
5
</td>
<td class="text-center">
8%
</td>
<td class="text-center">
20
</td>
<td class="text-center">
300.00
</td>
</tr>
</tbody>
</table>
Каждая строка таблицы имеет 6 точек данных, указанных в теге td. Я сократил фрагмент только до одной строки таблицы, но только представьте, что у вас есть более 100 строк таблицы.
Код VBA
Dim table As WebElement, tableElements As WebElements, tableData() As String, Element
Dim tableIndex As Integer, tableDataCount As Integer
'Get the table
Set table = bot.FindElementByXPath("//*[@id=""Tables_Table_0""]")
'Get the <td> elements
Set tableElements = table.FindElementsByTag("td")
'Assign array size to variable to use later on during loops
tableDataCount = tableElements.Count
'Assign array size
ReDim tableData(tableDataCount)
'Loop index counter
tableIndex = 1
'PROBLEM HERE - TAKES TOO LONG WHEN I HAVE A BUNCH OF ROWS IN MY TABLE
'Loop each element and get the Text value
For Each Element In tableElements
tableData(tableIndex) = Element.text '
tableIndex = tableIndex + 1
Next Element