В чем разница между ExpectedConditions.refresh и ExpectedConditions.stalenessof - PullRequest
1 голос
/ 11 апреля 2019

Не могли бы вы помочь мне понять ExpectedConditions.refresh и ExpectedConditions.stalenessOf.

1 Ответ

3 голосов
/ 11 апреля 2019

ExpectedCondtion.referesh принимает ExpectedCondtion в качестве аргумента.

Предположим, у вас есть элемент текстового поля, которым манипулирует приложение, и он перерисовывается.Обычно вы получите StaleElementReferenceException, потому что когда WebDriver вызывает метод findElement, он сохраняет ССЫЛКУ на объект.Если объект перерисовывается, то ссылка на объект больше не актуальна и выдается StaleElementReferenceException.

ExpectedCondition.stalenessOf ждет, пока элемент будет перерисован.Это может быть полезно подождать, если произошла манипуляция DOM.Затем вы можете снова найти свой элемент и выполнить операцию (или использовать элемент, созданный PageFactory, а не перефразировать его).

Однако этим элементом можно манипулировать много раз (например, с помощью вызовов jQuery из front-конец).В этом случае ожидание, пока элемент устарел, и попытка его найти, в любом случае может вызвать StaleElementReferenceException, потому что элемент СНЯТ СНОВА.

В этом случае вы можете использовать ExpectedCondition.refresh(<my-expected-condition>).Это позволит вам выполнять операции в течение периода времени, независимо от устаревания элемента

...