2

Page Object 패턴을 사용하여 웹 응용 프로그램 상호 작용을 모델링했습니다. 앱의 대부분 페이지에는 "로그인", "로그 아웃", "집"등과 같은 몇 가지 표준 옵션이 있습니다. 또한 모두 보호 된 WebDriver 참조가 있습니다. GrandpaClass - Selenium, Java, PageObject 패턴, 계층 구조가 깨져 있습니다.

그래서 나는 모든 페이지를 상속하는 슈퍼 슈퍼 클래스를 만들었습니다. 여기에는 보호 된 WebDriver 참조와 드라이버를 초기화하는 생성자 만 포함됩니다. PapaClass -

나는 다음 가장 페이지를 상속하는 수퍼 클래스를 만들었습니다. 그것은 GrandpaClass을 상속하고 위에 나열된 표준 메뉴 기능을 추가합니다 (로그인 등)

동일한 메뉴 작업으로 인해 다른 페이지가 표시 될 수있는 경우 문제가 발생합니다. 예를 들어, 로그 아웃 할 때 로그인 페이지로 이동하거나 오류 페이지로 돌아갈 수 있습니다. 그러나 로그인 기능이 PapaClass에 있기 때문에이 클래스는 을 상속받은 다른 페이지를 반환해야합니다 (). 이렇게하면 수퍼 클래스는 해당 서브 클래스에 종속됩니다.

나는 전략과 같은 것을 사용하여 일반적인 메뉴 기능을 제외하려고 생각했습니다. 따라서 PapaClass은 기능을 유지하는 대신 Menu 개체에 대한 참조 만 유지합니다.

이 방법을 사용하는 것이 좋습니까? 아니면이 문제를 해결할 수있는 좀 더 세련된 (또는 더 간단한) 방법이 있습니까?

감사합니다.

답변

2

Menu 객체는 좋은 생각이지만, PapaClass은 필요하지 않습니다. 할아버지 클래스에서 모든 페이지를 상속 받고 공통된 요소가있는 곳에서 Composition을 사용할 수 있습니다. 상속을 사용하면 '메뉴가있는 페이지입니다'라는 메시지가 표시됩니다.이 페이지는 메뉴가 있어야 함을 나타냅니다.

0

예, 뭔가를 기반으로 페이지를 반환하기위한 다른 전략이 필요한 경우 그래도 괜찮다고 생각합니다. 문제에 대한 당신의 묘사는 당신이 그 문제를 지나치게 복잡하게한다고 믿게 만듭니다.

관련 문제