Page Objects パターンに関する継承に対処する方法を提案してください。
たとえば、ページ オブジェクトはプロパティとメソッドを共有する必要があります。
public class LoginPage extends SuperPage
public class SuperPage extends LoadableComponent<SuperPage>
これでOKです。しかし、問題は、UnitTests が SuperPage を拡張せず、テストのグローバル プロパティなどを保持する TestCase を拡張することです。
TestCase と SuperPage で同じものを共有する必要があるため、重複を避けるようにしています... Pages と Tests は、これらのうちの 1 つだけを拡張できます。
たとえば、利用可能な PageObjects と Tests で同じフォーム データが必要です...
例:
html フォームに入力するための PageObject がある場合、フォーム フィールドの名前が必要ですが、他の pageObject でも必要です。フィールド名がある SuperPage を拡張するようにします。たとえば、次の理由により、UnitTests から提供することはできません。
@CacheLookup
@FindBy(how = How.ID, using = namespace + signifLvl)
private WebElement sigLvl;
@CacheLookup
@FindBy(how = How.ID, using = namespace + languageTo)
private WebElement langTo;
@CacheLookup
@FindBy(how = How.ID, using = namespace + languageFrom)
private WebElement langFrom;
@CacheLookup
@FindBy(how = How.ID, using = namespace + description)
private WebElement desc;
しかし一方で、これらを UnitTest メソッドで使用する必要があります。これは、それらとは異なる値を PageObjects に提供するためです。
それ以外の場合は、常に次のようにして、PageObjects に TestCase からの変数を事前設定します。
@Test
public void doStuff() throws IOException {
driver.navigate().refresh();
FillOutFormPage fofp = new FillOutFormPage(driver);
fofp.fill(some values from TestCase);
fofp.get();
}