Использование своих методов вместо @FindBy

В общем меня второй день мучает вопрос, почему бы не использовать свои методы везде …
Один раз написать метод, в нем все указать и обращаешься постоянно к нему…
На самом деле вопрос не только про @FindBy, а в принципе …
Почему бы не создать метод к примеру FindByIdAndClick(id) ; просто писать id и все …
И вопрос номер два: почему бы ожидание появления элемента wait не засунуть в каждый такой метод, чтоб он на постоянке работал и не думать вообще об этом?

bb.buyPkBook(параметры)
public void buyPkBook(String variableTwo, String variableThree, String variableFour, String variableFive){

        WebElement variableOne = driver.findElement(By.variableTwo(variableThree));

        Actions actions = new Actions(driver);
        actions.moveToElement(variableOne).build().perform();

        driver.findElement(By.variableFive(variableFour)).click();
    }

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

это велосипед по дефолту в каждой первой библитотеке или фреймворке

А что сложного то? просто правильные название давать методам и все, iDEA сама подскажет что писать …

Знаки препинания какие то должны быть в этой строчке? Это нормально или нет wait в каждом методе?

Лучше используй готовую популярную библиотеку или просто переопредели WebElement, но уже с ожиданиями, и + вспомогательные методы, короче чтобы максимально было похоже на методы драйвера, тогда всем будет легко работать с проектом

Конечно это нормально, пиши свои методы если не хочешь использовать готовое решение и есть время, не вижу ничего плохого в этом, правда потом захочешь все переписать несколько раз и это тоже нормально)

1 лайк

Вам уже советовали использовать готовые решения, где всё это уже давным давно продумано.

Также хранение локаторов в атирибутах @FindBy у здесь в группе разработчики Selenide не сильно рекомендуют, я тоже не использую, потому что не получится сделать локатор с параметрами, а это нужно если хотите найти текст с помощью например только XPath или пробросить индекс

Это конечно удобная вещь в написании тестов, но что если элемент не найден либо не кликабелен, какую ошибку вернет в этом случае?