У меня есть такой интерфейс:
Мне нужно выбрать каждое вложение и щелкнуть, чтобы загрузить или удалить.
Для загрузки:
// get the list of radio buttons
List<WebElement> attachments = driver().findElements(By.className("select-attachment"));
for (WebElement attachment : attachments) {
attachment.click();
driver().findElement(By.className("download-attachment")).click();
}
Это работает нормально, вложения будут щелкаться и загружаться.
Но я столкнулся с проблемой детального теста. Потому что, когда я нажимаю кнопку «Удалить», появляется диалоговое окно Alert
с вопросом «Ты уверен, бла», после того, как я принимаю это диалоговое окно, я получаю StaleElementReferenceException
Удалить:
// get the list of radio buttons
List<WebElement> attachments = driver().findElements(By.className("select-attachment"));
for (WebElement attachment : attachments) {
attachment.click();
driver().findElement(By.className("delete-attachment")).click();
Alert alert = alert().get();
alert.accept();
}
Это отлично работает для первого вложения, но после того, как я принимаю Alert
, элемент attachement
больше не присоединяется к DOM, поэтому, когда он переходит ко второй радиокнопке, я получаю StaleElementReferenceException
.
Я знаю, что с элементом Stale мы должны findElement
снова. Но так как у меня есть список в for
l oop, я не знаю, как с ним справиться.
Как я могу по-прежнему использовать for
l oop и иметь возможность обрабатывать элемент Stale