Есть два различных андроид нативных мобильных приложения с общей логикой и дизайном но различными локаторами. Проект разрабатываю используя selenium + appium + java + maven.
Есть идея использовать page factory pattern - одном классе где задаются локаторы кастомизировать @AndroidFindBy_ProjectX или @AndroidFindBy_ProjectY -вопрос как это сделать или как переключать AndroidFindBy в зависимости от приложения?
Пишите свой декоратор для InitElements, который будет знать как искать элементы.
Можно юзать аннотацию @HowToUseLocators(androidAutomation=LocatorGroupStrategy.ALL_POSSIBLE)
В итоге у вас будет пейдж обджект
@HowToUseLocators(androidAutomation=LocatorGroupStrategy.ALL_POSSIBLE)
@AndroidFindBy (id = locator_projectX )
@AndroidFindBy (id = locator_projectY )
MobileElement button;
Какой-то метод где вы взаимодействуете с локатором :
public void clickButton() {
button.click()
}
В вебе я такие проблемы решаю через логический оператор: | в xpath селекторе. Тоесть когда у одного и того же логического элемента разные селекторы в разных местах, я их пишу в одном месте, выглядит так: @FindBy(xpath="(//[@class=‘бла’])[1] | //[@id=‘бла-бла’]")
ага, и завтра добавиться еще один env. и будет еще один if … решение не SOLID
вам нужно декоратор свой написать - нужно ковирять в сторону AppiumFieldDecorator