У меня есть страница, где дополнительные функции становятся доступными, если вы войдете в систему. Вход через всплывающую панель. При успешном входе в систему страница перезагружается (поэтому параметры, соответствующие правам пользователя, динамически добавляются в интерфейс).
@Override
@Step("Logs in as: {0}")
public <T extends Actor> void performAs(T actor) {
actor.attemptsTo(
Open.browserOn(homePage),
Click.on(homePage.loginMenuItem),
Enter.theValue(authenticated(actor).username())
.into(homePage.userField),
Enter.theValue(authenticated(actor).password())
.into(homePage.pwdField),
Click.on(homePage.loginBtn),
);
}
В тесте используется вопрос для запроса состояния страницы. Тем не менее, я вижу, что тест, похоже, работает на странице до того, как он будет перезагружен. (Тайм-аут ожидания цели, возвращает старые значения элементов на странице в зависимости от того, как я делаю вопрос). Я вижу измененную страницу, отображаемую. Ясно, что мне нужно подождать, пока страница откроется в ответ на щелчок, прежде чем я задам вопрос, который, по моему мнению, должен был сделать селен. Но как мне ждать? Если я добавлю:
Open.browserOn(homePage)
после клика, потом работает - в основном. Иногда кажется, что он все еще отвечает старой странице. Но если я перезапустить, это обычно работает. Т.е. вышеуказанный метод является нестабильным. Я мог бы просто подождать 2 секунды, но теоретически он все равно мог потерпеть неудачу, если сервер аутентификации работал медленно. Идеи, пожалуйста.