В чем разница между 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>), Это позволит вам выполнять операции в течение периода времени, независимо от устаревания элемента

Другие вопросы по тегам