t.me/atinfo_chat Telegram группа по автоматизации тестирования

Selenide. Нужно дождаться появление одного из элементов

Теги: #<Tag:0x00007fd769681f30> #<Tag:0x00007fd769681e18> #<Tag:0x00007fd769681c38>

Есть у меня два элемента SelenideElement
Хочу дождаться любого из них
В Selenium использовала wait.until(ExpectedConditions.or
(ExpectedConditions.visibilityOf(element1),
ExpectedConditions.visibilityOf(element2)));

Есть ли в Selenide более простой способ? Не очень люблю городить такие ожидания

Добавьте в импорты ExpectedConditions.*
И будет короче. Нормальное такое ожидание.
wait.until(or(visibilityOf(element1),visibilityOf(element2)));

Да вообще не хотелось бы использовать WaitUntil
Импорт сильно не поможет

Закройте IDE, и делайте всё руками тогда.

Только если вы сами напишете свой Framework, тогда не нужно будет городить такие ожидания. А вообще не понимаю, почему вам не нравится вариант с wiatUntil?

1 Симпатия

В селениде, да и в селениуме можно писать CSS селекторы через запятую.
Тогда получится, как вы хотите: дождёмся любого из этих элементов.

$("h1,h2,h3").shouldBe(visible);

Но вообще эта необходимость очень сомнительная. Тест должен быть детерменированным: должен появиться h1 - значит, ждите h1. Никаких “один из двух”.

1 Симпатия

Почему-то у меня с ними не складывается)
Лучше воспринимается более краткая запись. В свой фреймворк иногда “прячу” такие куски кода

Согласна, что не должно быть ожидания одного из двух элементов. Но, к сожалению, редирект на стороннюю систему и там у них как звезды сойдутся, так и получается. Либо нужно дополнительно кнопку Войти нажать, либо не нужно.
Фактически я не проверяю этот функционал, мне просто надо там ввести данные и засабмитить