ExpectedCondtion.referesh
принимает ExpectedCondtion
в качестве аргумента.
Предположим, у вас есть элемент текстового поля, которым манипулирует приложение, и он перерисовывается.Обычно вы получите StaleElementReferenceException
, потому что когда WebDriver
вызывает метод findElement
, он сохраняет ССЫЛКУ на объект.Если объект перерисовывается, то ссылка на объект больше не актуальна и выдается StaleElementReferenceException
.
ExpectedCondition.stalenessOf
ждет, пока элемент будет перерисован.Это может быть полезно подождать, если произошла манипуляция DOM.Затем вы можете снова найти свой элемент и выполнить операцию (или использовать элемент, созданный PageFactory, а не перефразировать его).
Однако этим элементом можно манипулировать много раз (например, с помощью вызовов jQuery из front-конец).В этом случае ожидание, пока элемент устарел, и попытка его найти, в любом случае может вызвать StaleElementReferenceException
, потому что элемент СНЯТ СНОВА.
В этом случае вы можете использовать ExpectedCondition.refresh(<my-expected-condition>)
.Это позволит вам выполнять операции в течение периода времени, независимо от устаревания элемента