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

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

design-patterns
locators
java
webdriver
Теги: #<Tag:0x00007f9c4a982040> #<Tag:0x00007f9c4a981eb0> #<Tag:0x00007f9c4a980588> #<Tag:0x00007f9c4a987e28>

(Gallagher) #1

В общем меня второй день мучает вопрос, почему бы не использовать свои методы везде …
Один раз написать метод, в нем все указать и обращаешься постоянно к нему…
На самом деле вопрос не только про @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();
    }

(Михаил Братухин) #2

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


(Vatslau) #3

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


(Gallagher) #4

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


(Gallagher) #5

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


(Viktor) #6

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


(Viktor) #7

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


(Alexandr D.) #8

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


(Viktor) #9

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


(Dima Mayboroda) #10

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