В нашем приложении есть функция выбора учетной записи Google (без аутентификации, просто привязка).
Вот как выглядит намерение выбора учетной записи Google
Intent intent = AccountPicker.newChooseAccountIntent(null,
null,
new String[]{"com.google"},
true,
null,
null,
null,
null);
startActivityForResult(intent, REQUEST_CODE_PICK_ACCOUNT)
Когда я тестирую приложение в своем эмуляторе, я выбираю фиктивную учетную запись Google. Я делаю то же самое при захвате тестовой записи Robo.
И мой Robo json выглядит так, прежде чем показывать приглашение выбора учетной записи
{
"eventType": "VIEW_CLICKED",
"timestamp": 1567317991869,
"replacementText": "Choose a Google Account",
"actionCode": -1,
"delayTime": 0,
"canScrollTo": false,
"elementDescriptors": [
{
"className": "android.support.v7.widget.AppCompatButton",
"recyclerViewChildPosition": -1,
"adapterViewChildPosition": -1,
"groupViewChildPosition": 2,
"resourceId": "com.app.xyz:id/btn_main_propic",
"contentDescription": "",
"text": "Choose a Google Account"
},
{
"className": "android.widget.RelativeLayout",
"recyclerViewChildPosition": -1,
"adapterViewChildPosition": -1,
"groupViewChildPosition": 0,
"resourceId": "com.app.xyz:id/id_main_rlyt",
"contentDescription": "",
"text": ""
},
{
"className": "android.support.v7.widget.ContentFrameLayout",
"recyclerViewChildPosition": -1,
"adapterViewChildPosition": -1,
"groupViewChildPosition": 0,
"resourceId": "android:id/content",
"contentDescription": "",
"text": ""
}
]
}
И после выбора учетной записи мой робоскрипт имеет это.
{
"eventType": "VIEW_CLICKED",
"timestamp": 1567318000894,
"replacementText": "I Agree, Proceed",
"actionCode": -1,
"delayTime": 0,
"canScrollTo": false,
"elementDescriptors": [
{
"className": "android.support.v7.widget.AppCompatButton",
"recyclerViewChildPosition": -1,
"adapterViewChildPosition": -1,
"groupViewChildPosition": 5,
"resourceId": "com.app.xyz:id/btn_first_proceed",
"contentDescription": "",
"text": "I Agree, Proceed"
},
{
"className": "android.widget.RelativeLayout",
"recyclerViewChildPosition": -1,
"adapterViewChildPosition": -1,
"groupViewChildPosition": 0,
"resourceId": "com.app.xyz:id/id_main_rlyt",
"contentDescription": "",
"text": ""
},
{
"className": "android.support.v7.widget.ContentFrameLayout",
"recyclerViewChildPosition": -1,
"adapterViewChildPosition": -1,
"groupViewChildPosition": 0,
"resourceId": "android:id/content",
"contentDescription": "",
"text": ""
}
]
}
Как вы можете заметить выше, нет записи для выбора учетной записи. т. е. нажав на имя учетной записи.
Вот здесь и возникает проблема, когда я тестирую ее в облаке. Вместо того, чтобы использовать существующую учетную запись Google, робот создает новую учетную запись и терпит неудачу.
Подсказка в облачном тесте выглядит так.
Тест должен выбрать первый вариант. Вместо этого он выбирает опцию «Добавить учетную запись», начинает создавать учетную запись и терпит неудачу.
Вопросы есть.
- Почему robo json не фиксирует шаг выбора учетной записи?
- Что нужно сделать, чтобы использовать существующую учетную запись Google на облачном устройстве?
Обратите внимание, что это не аутентификация, как описано на этой странице а>. Это только привязка существующей учетной записи (подойдет любая учетная запись).