Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Ошибка при динамической перерисовке элемента DOM

dom
java
selenium
webdriver
Теги: #<Tag:0x00007f7b64b79a30> #<Tag:0x00007f7b64b79710> #<Tag:0x00007f7b64b794b8> #<Tag:0x00007f7b64b79350>

(Kosmos) #1

Добрый день.
Есть динамическая форма, на ней есть <input>. Когда вводится в него последний символ - он перерисовывается. Текст ввожу так:

findElement(By.xPath(".//div[@id='data']/input")).sendKeys(data);

После ввода последнего символа возникает ошибка:

StaleElementReferenceException: stale element reference: element is not attached to the page document

Обновлял версию дрейвера для Chrome. Не помогло. Ставил принудительные задежки после ввода каждого символа на 2 сек - не помогло.

В чем суть данной ошибки и как можно её пофиксить?


(Dzmitry Ihnatsyeu) #2

вам необходимо заново найти этот же элемент, тк как вы и сказали, он перерисовывается


(Алексей Бобруцков) #3

Если все настолько плохо, что только после ввода последнего символа дом перестраивается- попробуй тупо ловить этот экспшен, ну это как первая мысль, не вдаваясь в детали


(Sergey Korol) #4

(Kosmos) #5

ищется заново при каждом вводе символа + wait стоит.


(Kosmos) #6

решилось простым способом, хоть немного и не по фен-шую.
В данном случае использовал:

jsExecute("$('#data > input').value('" + data + "')");
jsExecute("$('#data > input').keyup()");

(Алексей Бобруцков) #7

Ну с тем же успехом мог бы кнопку “TAB” нажимать, без использования JS ,мне так кажется


(Kosmos) #8

нет. Элемент перерисовывается не зависимости от вводимого символа.


(Алексей Бобруцков) #9

ТАБ перекинет курсор на следующее поле, или просто фокус с поля уберет