Как спроектировать метод для работы с методами selenide?

Пишу метод упрощающий чтение кода и никак не могу сделать его так, что бы он был универсальный

public class Pages {

public void searchByText(String text) {

    $(byText(text));

}

}

pages.searchByText("Текст");

Но хочется сделать так, что бы можно было работать с методами самого selenide через свой метод

Т.Е. вот так > pages.searchByText("Текст").shouldBe(visible);

public SelenideElement searchByText(String text) {
    return $(byText(text));
}
3 лайка

@BabyRoot правильно написал, но ваш подход не приносит ничего нового кроме дополнительного уровня абстракции. Я бы не писал такие методы а использовал бы селенидовские методы напрямую.

2 лайка

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

Как раз таки чем больше вы своих кастомных штук добавляете в проект - тем более высокий уровень вхождения.

  • Ваши штуки скорее всего документированы и протестированы хуже чем селенидовские оригинальные методы
  • В случае проблем - по оригинальным методам будет легче гуглить и спрашивать на этом форуме.
  • Меньше слоев абстракции, достаточно разобратся в API Selenide, не нужно учить методы которые только для этого проекта
  • Быстрей вхождение нового человека на проект если он уже знает Selenide - ему не нужно учить новые методы, аргументы, и переучиваться на новый стиль
3 лайка

Если уж совсем универсально делать, чтобы метод был один - то, что-то типа такого:

public SelenideElement SearchElement(SearchBy by, string value)
{
  switch (by)
    {
        ...
    }
}

Где SearchBy - енум со всем добром что вы хотите юзать в качестве поиска.

Ну и человек через intellisense сам выбирает что использовать для поиска и передаёт значение, а реализация конкретно в свитче уже.

Ну а так да - это не упрощение для новичков. Лишний геморрой.

1 лайк

Метод $ и так универсален, какую пользу приносит этот враппер кроме переименования?

Удобство в обращении с page object

Привет!
В чём именно заключается удобство? За что вы так ненавидите доллар? При создании Селенида как раз всё было сделано для того, чтобы порог вхождения для новичков будет минимален. Зачем же его истреблять?

4 лайка

Не портите selenide).

Надо сделать еще RUB(By.id(" “)) и EUR(By.id(” ")) для тех кто против $

1 лайк

Согласен. А еще фича - при использовании CSS селекторов так вообще можно копипастить прямо из проекта в дев консоль. Никакой враппер searchByOLOLO так не сможет.

image

Чего же вы все так налетели то?, я учусь, это моя первая программа, и, я считаю, абсолютно нормальная практика, мне сейчас так удобнее писать тесты) image

Я понял и принял ваш совет ещё после первого комментария @xotabu4, ответ дан, тема закрыта.