В общем вопрос вот в чем: есть у меня к примеру метод(не использую никакой фреймворк)
public WebElement id(String id) {
return wait.until(ExpectedConditions.visibilityOfElementLocated(By.id(id)));
}
Потом есть у меня какой то метод, описывающий элемент страницы
public void selectPhone(String phone) {
id("phone");
id("phone").sendKeys(Keys.HOME);
id("phone").sendKeys(phone);
}
А уже в тесте я этому элементу просто задаю номер телефона как в данном случае
cartPage.selectPhone(cartPage.phone);
В общем вся логика у меня в методе selectPhone …
Но вчера смотрел выступление там чувака одного на Selenium Camp … он говорил о JDI фреймворке …
Так вот он там взаимодействует с элементами именно в тесте.
получается у него что-то типа
Сто раз обсасывалось. И так и так подходит.
Как вам удобно.
Вам удобно копировать в тестах 3 строчки кода - делайте как этот чувак сказал (скорее всего, такой тест только один, и разумно не делать ещё один логический уровень).
Вам удобно иметь один метод который работает с нужным полем нужным образом - делайте как у вас сделано (скорее всего, этот метод будет использоваться во многих тестах).
Правильно - в тесте вызывать ТОЛЬКО методы.
А вся логика должна быть в них.
Иначе дублирование кода будет колоссальным и потом на исправление, например, ввода телефона, который будет использоваться во многих тестах уйдет в стопицот раз больше времени, чем исправление кода только в одном месте.
Так же модно, стильно, молодёжно делать инкапсуляцию элементов страницы, т.е. работать со страницей только посредством вызова методов класса, который её описывает, а непосредственно поле элемента делать приватным.