Size: a a a

Selenide на русском

2019 December 02

A

Artem in Selenide на русском
Я просто не уверен, как лучше определить, что элемент - уже обновился, всё равно завязываться, что он стал stale?
источник

AS

Andrei Solntsev in Selenide на русском
Да ну, это плохо.
источник

A

Artem in Selenide на русском
А как тогда будет лучше?

>мы в цикле свитчимся во фрейм, ждём там появления нужного элемента
Просто у меня нет новых элементов, а по тем, что есть - как определить, что это обновленный элемент, а не старый?
источник

AS

Andrei Solntsev in Selenide на русском
А как пользователь должен понять, что фрейм обновился?
источник

A

Artem in Selenide на русском
Новые значения появляются в других селектах. Но проблема в том, что селектов больше 20 - и тогда придется на каждый писать своё условие...
источник

A

Artem in Selenide на русском
Ну и плюс визуально фрейм "промаргивает" - то есть видно, что он перерисовался
источник

AS

Andrei Solntsev in Selenide на русском
Юзер может этого не заметить.
источник

AS

Andrei Solntsev in Selenide на русском
Значит, достаточно проверить какое-нибудь одно поле.
источник

A

Artem in Selenide на русском
ну, фрейм - около 70% экрана, когда перерисовывается (и эта часть становится просто белой) - это заметно.

А проверить на что именно? если $(list).shoulBe(visible) - нет гарантии, что это уже новое поле, а не еще старое (перерисовка не всегда быстрая, возможно проверка началась до того, как стартовала перерисовка).
источник

AS

Andrei Solntsev in Selenide на русском
Проверить, что поле видимое, и в нём новое значение.
источник

A

Artem in Selenide на русском
Да, видимо, это самый надежный вариант. Просто тогда код сильно разрастается - для примера, сначала юзер выбирает Европу, значение в данном селекте обновилось, только потом перезагрузился фрейм, в следующем поле появились страны, потом в следующем поле после выбора страны - города, и так получается много всего...

Что ж, в любом случае спасибо за совет!
источник

RC

Roman Cherkasov in Selenide на русском
Всем привет! Подскажите как установить setTrustAllServers = true в встроенный прокси?
источник

VD

Vadim D in Selenide на русском
как в селениде настроить нормальное логирование событий?
нашел только эти 2 метода

   @Override
   public void afterEvent(LogEvent logEvent) {
       log.info(logEvent.getSubject()+" "+logEvent.getElement()+" "+logEvent.getStatus()+" "+logEvent.getDuration());
   }

   @Override
   public void beforeEvent(LogEvent logEvent) {
       log.info(logEvent.getSubject()+" "+logEvent.getElement()+" "+logEvent.getStatus()+" "+logEvent.getDuration());
   }

иплементировал как выше
но вывод весьма убогий
2019-12-02 17:08:31 [main] INFO  LoggingEventListener  - wait until([visible, 25000]) <button> IN_PROGRESS -667770079
2019-12-02 17:08:31 [main] INFO  LoggingEventListener  - wait until([visible, 25000]) <button> PASS 167
2019-12-02 17:08:31 [main] INFO  LoggingEventListener  - wait until([enabled, 25000]) <button> IN_PROGRESS -667770699

обычный селениум дает куда более информативный
источник

AV

Alexei Vinogradov in Selenide на русском
Vadim D
как в селениде настроить нормальное логирование событий?
нашел только эти 2 метода

   @Override
   public void afterEvent(LogEvent logEvent) {
       log.info(logEvent.getSubject()+" "+logEvent.getElement()+" "+logEvent.getStatus()+" "+logEvent.getDuration());
   }

   @Override
   public void beforeEvent(LogEvent logEvent) {
       log.info(logEvent.getSubject()+" "+logEvent.getElement()+" "+logEvent.getStatus()+" "+logEvent.getDuration());
   }

иплементировал как выше
но вывод весьма убогий
2019-12-02 17:08:31 [main] INFO  LoggingEventListener  - wait until([visible, 25000]) <button> IN_PROGRESS -667770079
2019-12-02 17:08:31 [main] INFO  LoggingEventListener  - wait until([visible, 25000]) <button> PASS 167
2019-12-02 17:08:31 [main] INFO  LoggingEventListener  - wait until([enabled, 25000]) <button> IN_PROGRESS -667770699

обычный селениум дает куда более информативный
Мы рекомендуем вообще ничего не настраивать в общем случае.

Для чего именно вы используете логгирование?
источник

VD

Vadim D in Selenide на русском
Alexei Vinogradov
Мы рекомендуем вообще ничего не настраивать в общем случае.

Для чего именно вы используете логгирование?
смотреть за событиями в тесте
что происходило \ статус действия
источник

AV

Alexei Vinogradov in Selenide на русском
Vadim D
смотреть за событиями в тесте
что происходило \ статус действия
За успешными событиями смотреть?

Все неуспешные логгируются селенидом с читаемым сообщением об ошибке, скриншотом, копией DOM, и стектрейсом
источник

VD

Vadim D in Selenide на русском
Alexei Vinogradov
За успешными событиями смотреть?

Все неуспешные логгируются селенидом с читаемым сообщением об ошибке, скриншотом, копией DOM, и стектрейсом
успешными \ не успешными
есть проблема когда в логе клик отображен как успешный
но на самом деле он не произошел
и дальше идет поиск след элемента, естественно он падает
источник

AV

Alexei Vinogradov in Selenide на русском
Но существует решение специально под ваши запросы.

Это плагин io.qameta.allure/allure-selenide

Одна строчка добавляется в тест, и все поиски отображаются в отчёте аллюра

SelenideLogger.addListener("AllureSelenide",
           new AllureSelenide());
источник

AV

Alexei Vinogradov in Selenide на русском
Правда на самом деле и для вашей ситуации эти отчеты не особенно помогут. Вы же сами сказали - клик был не успешным, а тест счел его успешным. Что вы увидите в логах? Только то, что клик был залогирован как успешный, а вы это и так знаете.
источник

AV

Alexei Vinogradov in Selenide на русском
https://github.com/vinogradoff/allure-selenide-example

Вот пример использования плагина
источник