Но Сохранение не закрывает карточку, а значит возвращает туже страницу с которой мы работали Karaoke. То есть на каждую страницу придется тогда делать свой возврат
public class Footer{
public Karaoke save(){
return new Karaoke(driver);
}
public Movie save(){
return new Movie(driver);
}
public Serials save(){
return new Serials(driver);
}
То есть если я правильно понял на каждый вид Footer я создаю свой интерфейс используя обобщения. А сам интерфейс буду реализовывать в классе описывающий страницу, так?
Типа того. На самом деле надо пробовать реализовывать и смотреть что получается. Даже в этом случае не сразу получается сделать удобно. А уж не видя кода что-то правильно подсказать и вовсе сложно. Пробуй делать, использовать, улучшать
Хорошо, как сделаю напишу пример как это выглядит. Но вот еще вопрос по теме только отвлеченно. Когда мы создаем абстрактный класс Page и помещаем в него некоторые элементы которые встречаются на всех страницах, то как быть с методом который встречается только о половины из всех страниц?
Например в моем случае это элементы (Combobox,Checkbox,TextField) они все реализованы в абстрактном методе Page. От него наследуются все страницы (главная страница, форма и попап). Но что делать с методом List2List, он не встречается на главной странице? Стоит ли его также реализовать в Page?
Во-первых, классы элементов страниц (TextBox, Combobox и т.д.) не стоит делать частью страницы, а вынести их в отдельные классы
Во-вторых, иерархия классов PageObject должна описывать иерархию типов страниц UI приложения. То есть в абстрактном классе AbstractPage описать только тот функционал, который присущ всем 100% страниц. Потом смотреть какие ещё типы страниц вырисовываются и делать под них общий родительский класс, наследованный от AbstractPage. А наследники этого родительского класса будут реализовывать конкретные страницы.
А это будет нормальным в данном случае на каждый метод описывающий работу с типом элемента, создавать отдельный класс? (тема опять наверно из разряда god object)
Тебе не надо создавать класс на каждый метод, работающий с типом элемента. Тебе надо создать класс на каждый тип элемента. Потом уже в страницах использовать экземпляры этих классов для работы с элементами.
P.S. задавай уже конкретные вопросы, с кусками кода, в отдельных темах. А-то на пальцах каждый по-разному воспринимает информацию