Можно ли использовать статические методы для получения элементов в page object model espresso
Я пишу page object model с использованием библиотеки espresso. Есть базовый класс в которм я создал основные методы работы с элементами:
public class EspressoBaseTest {
public void clickButton(Integer resourceId) {
Allure.step("Клик по кнопке c id: " + resourceId);
onView((withId(resourceId))).perform(click());
}
public void clickButtonWithScroll(Integer resourceId) {
Allure.step("Клик со скроллом по кнопке c id: " + resourceId);
onView((withId(resourceId))).perform(scrollTo(), click());
}
public void checkById(Integer resourceId) {
Allure.step("Проверка отображения элемента на странице c id: " + resourceId);
onView(withId(resourceId)).check(matches(isDisplayed()));
}}
Затем наследуюсь в классах страниц, например страница новостей:
public class NewsPage extends EspressoBaseTest {
private final int newsList = R.id.news_list_recycler_view;
public static int getEditButtonId() {
return R.id.edit_news_material_button;
}
public static int getAddNewsButtonId() {
return R.id.add_news_image_view;
}
public void checkAddedNews(String description, int position) {
Allure.step("Проверка существования добавленной новости c названием: " + description);
onView(withId(newsList)).perform(actionOnItemAtPosition(position, click()));
onView(allOf(withId(R.id.news_item_description_text_view), withText(description))).check(matches(isDisplayed()));
}
}
Вопрос собственно в том, можно или использовать вот такие методы для получения элементов, как например:
public static int getAddNewsButtonId() {
return R.id.add_news_image_view;
}
и в тесте соответственно использовать так:
newsPage.clickButton(NewsPage.getEditButtonId());
Чтобы было понятнее я создал класс EspressoBaseTest , чтобы вынести в него общие методы для работы с элементами, а уже какие то специальные разместил внутри классов страниц.