findElement()
выдает исключение, если элемент отсутствует - таким образом цикл вращается один раз, исключение выдается, и цикл останавливается. Так что вам нужно справиться с этим:
boolean displayed = false;
do{
try{
displayed = driver.findElement(By.xpath("//*[text()='UserID']")).isDisplayed());
} catch (NoSuchElementException){
driver.navigate().refresh();
}
} while(!displayed);
Не будет Херд, если вы добавите логику счетчика / таймера макс., Иначе, если элемент не появится, цикл будет вращаться бесконечно.