<table>
<tr id="tr1">
<td id="td1">1</td>
<td id="td2">2</td>
<td id="td3">3</td>
<td id="td4">4</td>
<td id="td5">5</td>
<td id="td6">6</td>
<td id="td7">7</td>
<td id="td8">8</td>
<td id="td9">9</td>
<td id="td10">10</td>
</tr>
<tr id="tr2">
<td id="td1">11</td>
<td id="td2">22</td>
</tr>
</table>
Я получаю элемент 'tr1', используя
WebDriverWait wait = new WebDriverWait(driver, 5);
tableHeaderRow = wait.until(ExpectedConditions.presenceOfElementLocated(By.id("tr1")));
Затем я получаю список 'td' и перебираю элементы td.
List<WebElement> headersList = tableHeaderRow.findElements(By.tagName("td"));
System.out.println("Size :" + headersList.size()); //10
Размер списка здесь 10.
headersList.forEach(td -> System.out.println(td.getTagName()));
Но когда я перебираю список, я получаю исключение StaleElementReferenceException после перебора 4 или 5 элементов.
org.openqa.selenium.StaleElementReferenceException: stale element reference: element is not attached to the page document.
Проблема в том, что хотя tr1 загружен, tds загружаются не полностью, когда происходит итерация. Ожидание только проверяет загрузку упомянутого родительского элемента (tr1).
Существует ли правильный способ решения этой проблемы. Дождитесь загрузки родительского элемента и всех дочерних элементов.