Используя шаблон объекта страницы, я создавал класс для каждой страницы. Затем я понял, что на некоторых страницах есть похожие css классы, я повторял слишком много кода. Пример: BasePage = все наследуемые от него страницы (где установлены драйвер и ожидания) Page1, Page2, Page3 = все они имеют одинаковые свойства, поэтому я сгруппировал их в один класс под названием commonPage
Используя хорошую практику pageObjetcs в commonPage, я разделил на 3 другие страницы (чтобы они могли быть меньше): CommonPage_Header , CommonPage_Menu и CommonPage_List .
Проблема в том, что, например, page1 не может наследоваться от CommonPage_Header, CommonPage_Menu и CommonPage_Header. Как я могу справиться с этой ситуацией? Я уже пытался использовать абстрактные классы и интерфейсы.
Мне нужно, чтобы каждая страница наследовала от commonPage_Header , commonPage_Menu и commonPage_List с их каким-либо конкретным свойством
Примечание Некоторые из этих «определенных свойств» - это методы с телами, поэтому я не собираюсь использовать интерфейсы
public class BasePage(){
//browsers and timeouts
}
public abstract class CommonPage_Header extends BasePage {
public PanelHeader(WebDriver driver) {
super(driver);
}
//similar methods
}
public class Page1 extends CommonPage_Header {
//overwriting some methods of CommonPage_Header, but setting some specification for the page 1
//The problem: I need to use methods of CommonPage_Menu and CommonPage_List too :(
}```