StaleElementReferenceException
появляется, когда элемент, с которым вы работаете, больше не присутствует в домене или устарел. Поэтому, чтобы исправить это, вам нужно снова извлечь элемент, прежде чем работать с ним.
В вашем случае это будет выглядеть так:
Set<WebElement> songsTr = new HashSet<WebElement>();
List<WebElement> dynamicSongTable = driver.findElements(By.xpath("//tbody[@data-count='273']/tr"));
while (!dynamicSongTable.get(dynamicSongTable.size()-2).getAttribute("data-index").equalsIgnoreCase("272")) {
for (int i = 0; i < dynamicSongTable.size()-1; i++) {
songsTr.add(dynamicSongTable.get(i));
}
WebElement element = dynamicSongTable.get(dynamicSongTable.size()-1);
JavascriptExecutor jse = (JavascriptExecutor) driver;
jse.executeScript("arguments[0].scrollIntoView();", element);
dynamicSongTable = driver.findElements(By.xpath("//tbody[@data-count='273']/tr"));
}
System.out.println(songsTr.size());