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