Как изменить имя пакета в аннотации AndroidFindBy - PullRequest
1 голос
/ 14 февраля 2020

Проблема : я хочу запустить скрипт Appium в одном приложении, но в разных сборках.

Все идентификаторы ресурсов в приложении добавляются с именем пакета

Например: для сборки A , текстовое поле имени пользователя - - alpha.beta.charlie.delta:id/user_name и

Для сборки B поле имени пользователя alpha.beta.charlie/user_name, дельта удаляется из имени пакета.

Я использую AndroidFindBy из фабрики страниц, чтобы найти элементы

    private static final PACKAGE = "alpha.beta.charlie.delta"

    @AndroidFindBy(id = PACKAGE + "/user_name")
    private MobileElement username;

Где ПАКЕТ объявлен как константа.

Теперь, если я хочу запустить скрипт в сборке B, мне нужно каждый раз менять имя пакета перед тем, как инициировать выполнение. Что неэффективно.

Я знаю, что мы не можем добавлять переменные к аннотациям фабрики страниц.

Единственный обходной путь, который я вижу, - это использование https://developer.android.com/reference/android/support/test/uiautomator/UiSelector.html#resourceidmatches

Есть ли другой обходной путь, где я могу добавить имя пакета во время компиляции, чтобы обойти изменение имени пакета вручную.

1 Ответ

1 голос
/ 14 февраля 2020

Вам не нужно имя пакета, так как Appium может найти элемент без имени пакета в resource id, поэтому вы можете использовать value после ": id /" . Я прошел через эту проблему, когда получил изменение имени пакета для QA build и Prod build. поэтому попробуйте следующий код:

@AndroidFindBy(id = "user_name")
private MobileElement username;

Теперь он не зависит от имени пакета и может быть запущен для любой сборки, если id равен user_name во всех сборках.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...