Я создаю класс POM для класса / виджета Header в разделе Main Activity (пример приложения Reddit. См. Скриншоты ниже.) Проходя через Inspector, я вижу, что в заголовке будет доступно поле поиска, но если бы я былчтобы перейти к другому разделу / вкладке основного действия, поле поиска становится недоступным. Идентификатор / идентификатор ресурса также изменяется, заканчиваясь либо: id / search_view, либо: id / toolbar_title. Моя первоначальная реакция на этот вопрос - нет, но я хочу обратиться к любому, кто сталкивался с этой конкретной темой, прежде чем вызывать ее.
Я хотел посмотреть, смогу ли я сохранить любой идентификатор в одном MobileElement длямой класс заголовка, использующий условие Regex внутри UiSelector при вызове метода ResourceIdMatches.
Вот то, что у меня есть для моего в настоящее время в классе My Header. (Фокус на navTitle MobileElement):
@AndroidFindBy(id="com.reddit.frontpage:id/toolbar")
public MobileElement headerSection;
@AndroidFindBy(id = "com.reddit.frontpage:id/nav_icon")
public MobileElement userIcon;
//Needs work
@AndroidFindBy(uiAutomator = "new UiSelector()"
+ ".resourceIdMatches(\".*id/^([search_view|toolbar_title])+$\")")
public MobileElement navTitle;
public RedditMainActivityHeader(AppiumDriver<MobileElement> driver) {
super(driver);
}
Во время исследования темы Regex я отредактировал условие Regex, прежде чем использовать границы слов (\ b), не используя [], используя * вместо +,Альтернативой для решения этой проблемы может быть создание второго класса Header, при котором navTitle найдет идентификатор с помощью: id / search_view или: id / toolbar_title, но я бы не хотел делать это на практике с точки зрения управления классами.
Снимок экрана: версия 1: версия 2: