Size: a a a

Selenide на русском

2021 October 26

AK

Andrey Kurilov in Selenide на русском
+1
источник

BO

Boris Osipov in Selenide на русском
а какой начинке речь? каким боком мы должны решать ваши "разные данные иногда отображает" и "допустим xpath котировок иногда отличается"
источник

BO

Boris Osipov in Selenide на русском
данные разные - ваша аппликейшен специфика. селенид тут не причем
источник

YO

Yaroslav Osmysliteln... in Selenide на русском
что за класс ExchangeRates в данном примере
источник

RI

Roman Isakov in Selenide на русском
ну если визуально хотя бы шапка везде одинаковая, то ищи по тексту шапки, чтобы 10 страниц не плодить. а там создай методы для различных начинок, не?
источник

YO

Yaroslav Osmysliteln... in Selenide на русском
я смогу закончить или не закончить мысль после ответа на это:
»что за класс ExchangeRates в данном примере
источник

BO

Boris Osipov in Selenide на русском
public class ExchangeRates {
   private SelenideElement self;
   private SelenideElement currencyRates = self.$(".foo");

   public ExchangeRates(SelenideElement self) {
       this.self = self;
   }

   // прости господи.
   public String getRates() {
       return currencyRates.getText();
   }
}
источник

AK

Andrey Kurilov in Selenide на русском
прости господи
😂
источник

AK

Andrey Kurilov in Selenide на русском
    public SelenideElement rates() {
       return currencyRates;
   }
Чтобы в тесте потом
page.rates().should(Condition)
источник

YO

Yaroslav Osmysliteln... in Selenide на русском
ну щас так и делаю...
ExchangeRates.shouldBe(visible) нельзя, все идет через
getSelf. и такого иногда бывает крайне много.
+ если вложеность > 1, то иногда вылазят проблемы наследования классов (виджетов много, рассыпаны по страницам и т.д. и т.п.), Но если ExchangeRates по факту просто враппер со своими методами - почему бы не сделать его интерфейсом как MySuperElement, и получать его от $(..) вместо new? (сделать как как с page и как с $). Сопстно в этом и весь вопрос изначальный. сори что так размусолилось, борис спосибо за конкретику и вывод на простой пример.
источник

AK

Andrey Kurilov in Selenide на русском
я на примере фильров могу показать как делаю. фильтры тоже на нескольких страницах одинаковые
    ProductsPage.open(DATE);
   FiltersModal.open()
       .openDeviceFilter()
       .select(device)
       .submit();

Открываю страницу с фильтрами, на ней открываю фильтры (тут пример для мобилки), дальше перехожу в фильтр по девайсам, выбираю девайс, применяю
источник

BO

Boris Osipov in Selenide на русском
>+ если вложеность > 1, то иногда вылазят проблемы наследования классов
не наследуйте и не будет проблем.
источник

BO

Boris Osipov in Selenide на русском
>о если ExchangeRates по факту просто враппер со своими методами - почему бы не сделать его интерфейсом как MySuperElement, и получать его от $(..) вместо new?

.... нахеранахера зачем?
источник

BO

Boris Osipov in Selenide на русском
>ExchangeRates.shouldBe(visible) нельзя,
мне странно что оно было бы можно. на чем я должен внутри проверять visibility? зачастую этот самый self не то что бы виден
источник

BO

Boris Osipov in Selenide на русском
и только вы знаете как проверить что блок видим
источник

BO

Boris Osipov in Selenide на русском
и это уже снова ваш код)
источник

AS

Andrei Solntsev in Selenide на русском
Ты не подумай, что мы тут агрессивно набросились.. Наоборот, полезная конструктивная дискуссия.  

Но вот это самый важный вопрос: “почему бы не сделать его интерфейсом как MySuperElement, и получать его от $(..) вместо new” -> ЗАЧЕМ?

Дело в том, что это непросто. В это придётся вложить усилия, свободное время, написать тестов и т.д. - и всё ради того, чтобы кому-то не писать “new”?
источник

YO

Yaroslav Osmysliteln... in Selenide на русском
self - сам виджет, ну пусть будет exist, а не visible. вполне норм проверка
источник

AS

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

BO

Boris Osipov in Selenide на русском
>Ты не подумай, что мы тут агрессивно набросились.
ага. особенно я. no offence я просто так пишу по четным дням месяца)
источник