Тест не проходит если использую Selenide.sleep и Duration.ofSeconds()
Я сначала да же не понял в чем проблема. Думал что то с локаторами. У меня стол сначала Selenide.sleep(5000). Потом вызывался метод click по кнопке. И я на тесте всегда получал
на кнопке Expected: clickable: interactable and enabled
и не мог понять в чем проблема. Спрашивал ЧатGPT, весь DOM просмотрел на наличие скрытых и теневых элементов. Потом убрал Sleep и все, тест прошел без проблем.
Использую версию Selenide 7.7.0.
А на Duration.ofSeconds() у меня вообще тест зависает в бесконечность. ПРосто висит и не прибивается никогда. Может 10 минут висеть. Кто с подобным сталкивался ?
Я убрал все слипы и ожидания и тесты ходят.
У меня не получилось понять проблема в моих тестах, или версии Selenide.
Код
@Step("Click on the 'Pay and subscribe' button.")
public AccountPage clickPayAndSubscribeButton() {
Selenide.sleep(50000);
payAndSubscribeButton.click();
return page(AccountPage.class);
}
и
@Step("Assert: that the subscription type title field has {assertText}.")
public AccountPage assertionSubscriptionTypeTitle(String assertText) {
subscriptionTypeTitle.shouldHave(Condition.text(assertText), Duration.ofSeconds(1000));
return this;
}
Думается, что вы могли запутаться в своих ожиданиях.
В методе clickPayAndSubscribeButton() нет смысла использовать Selenide.sleep(50000);. Если стоит цель нажать на кнопку, то следует ожидать доступность кнопки через should.. методы
Написали, что может висеть 10 минут. Ну так у вас стоит время ожидания Duration.ofSeconds(1000), это чуть меньше, но выглядит так будто это причина жалобы.
Если shouldHave не дождался элемента и упал, то там есть ошибка, в которой написаны полезные детали, которые помогают понять “почему”.
Если спрашивали “великий чатжипити”, то он должен был ответить примерно тоже самое. Странное дело
Добрый день, прошу прощения. Уезжал и не написал. Я провел много экспериментов, как всегда больше подозревал свой код и проект)). Я завел новый чистый проект и попробовал сделать такое же ожидание на нем и проблема повторилась, так же попробовал версии Selenide, которые были раньше и на моих других проектах, такое ожидание работало 100 процентов. И проблема так же оставалась. Если исключить проект и библиотеку, остается только сайт ))) Проблема в странице оплаты на которую потом редиректит после выбора подписки это https://checkout.stripe.com. И если ее не рефрешнуть, то наблюдается вот такое странное поведение с ожиданием. Получается решил проблему просто рефрешем страницы.
Ожидание ставил перед кликом, потому что сначала был редирект на другую страницу и кнопка успевала нажаться, а так как страница не прогрузилась полностью то дальнейшие шаги не проходили. Решил проблему рефрешем страницы. Как описал выше, провел кучу експериментов и выяснил что проблема на странице партнера.