StaleElementReferenceException произвольно возникает при поиске элементаJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 StaleElementReferenceException произвольно возникает при поиске элемента

Сообщение Anonymous »

Бывает такая ситуация, когда я нахожу внутренний элемент div, но с переменным успехом из-за исключения StaleElementReferenceException. Сначала я нахожу диалог div, а затем пытаюсь избежать StaleElementReferenceException при поиске внутреннего div

Код: Выделить всё

WebElement dialog = null;
try {
dialog = wait.until(
ExpectedConditions.visibilityOfElementLocated(By.cssSelector("div[role='dialog']")));
} catch (TimeoutException e) {
logger.severe("no dialog after login");
}
logger.info("dialog found");
waitForChat(30);

try {
WebElement div = retryingFind(By.tagName("div"), dialog);
logger.info(div.getAttribute("class")); //null because the div is null
logger.info("inner div found");
} catch (TimeoutException e) {
logger.severe(ExceptionUtils.getStackTrace(e));
}
где повторяется метод Find:

Код: Выделить всё

public WebElement retryingFind(By by, WebElement el) {
WebElement result = null;
int attempts = 0;
while(attempts < 20) {
try {
result = el.findElement(by);
break;
} catch(StaleElementReferenceException e) {
System.out.println("StaleElementReferenceException");
}
attempts++;
}
return result;
}
Иногда внутренний div находится без проблем, но StaleElementReferenceException произвольно возникает при поиске элемента.
Насколько я понимаю, StaleElementReferenceException указывает, что ссылка на элемент теперь устарела, т. е. элемент больше не отображается в HTML DOM страницы, но элемент виден в момент его обнаружения.
Также рекомендуется проверять элемент на elementToBeClickable(), но во-первых имеет ли это смысл для div, а во-вторых я нахожу этот div через другой элемент, а не через вебдрайвер, поэтому конструктор new WebDriverWait(WebElement el, Продолжительность) не определена.
Как решить эту ситуацию?

Подробнее здесь: https://stackoverflow.com/questions/790 ... an-element
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»