Может кто-нибудь предложить способ борьбы с наследованием в отношении шаблона объектов страницы?
Например, объекты страницы должны иметь общие свойства и методы.
public class LoginPage extends SuperPage
public class SuperPage extends LoadableComponent<SuperPage>
Это было бы хорошо. Но проблема в том, что ваши UnitTests не расширяют SuperPage, они расширяют TestCase, который содержит глобальные свойства и т. Д. Для тестов.
Я стараюсь избегать дублирования, потому что мне нужно поделиться одним и тем же материалом в TestCase и SuperPage ... Страницы и тесты могут расширять только один из них.
Например, мне нужны те же данные формы в доступных объектах PageObjects и Tests ...
Пример:
Если у вас есть PageObject для заполнения html-формы, вам нужны имена полей формы, но они нужны даже в других объектах 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();
}