ページオブジェクトパターンを使用して、Webアプリの相互作用をモデル化しています。アプリのほとんどのページには、「ログイン」、「ログアウト」、「ホーム」などの標準オプションがあります。さらに、すべてのページに保護されたWebDriver参照があります。
そこで、すべてのページが継承するスーパースーパークラス( GrandpaClass )を作成しました。これには、保護されたWebDriver参照と、ドライバーを初期化するためのコンストラクターのみが含まれます。
次に、ほとんどのページが継承するスーパークラス( PapaClass)を作成しました。これはGrandpaClassを継承し、上記の標準メニュー機能(ログインなど)を追加します。
この問題は、同じメニューアクションで異なるページが表示される可能性がある場合に発生します。たとえば、ログアウトすると、ログインページに移動するか、エラーページに戻ることができます。ただし、ログイン機能はPapaClassにあるため、このクラスは、彼から継承する別のページを返す必要があります。これにより、スーパークラスはそのサブクラスに依存します。
ストラテジーのようなものを使用して、一般的なメニュー機能を除外することを考えていました。したがって、PapaClassは、機能を維持する代わりに、Menuオブジェクトへの参照のみを維持します。
これは良い考えですか、それともこれを解決するためのよりエレガントな(またはより簡単な)方法がありますか?
ありがとう。