Firebase Roboscript прерван из-за того, что робоскрипт записи Android Studio не может записать событие прокрутки страницы

Я записал робо-скрипт из Android-студии (android-студия -> инструменты-> Firebase-> тестовая лаборатория-> запись робо-скрипта). В моей деятельности у меня есть recyclerview, состоящий из около 20 значений (редактировать текст), как показано в create. PNG изображение. Итак, когда я записал робо-скрипт для этого действия, поместив значения во все 20 текстов редактирования, прокручивая это представление ресайклера. Затем я загружаю этот файл сценария вместе со встроенным файлом .apk в тестовую лабораторию Firebase. Но в результате теста он показывает, что «roboscript прерывается». И эта ошибка для текстовых значений редактирования, заполненных после прокрутки. Итак, есть ли способ добавить событие прокрутки в робо-скрипт во время записи, потому что в настоящее время студия Android не записывает никаких событий прокрутки? Нажмите здесь, чтобы создать.png

Ниже представлен записанный робо-скрипт (файл .json)

{
"eventType": "VIEW_CLICKED",//Last edittext value before scrolling
"timestamp": 1558518939378,
"replacementText": "Normal",
"actionCode": -1,
"delayTime": 0,
"canScrollTo": false,
"elementDescriptors": [
  {
    "className": "android.support.v7.widget.AppCompatRadioButton",
    "recyclerViewChildPosition": -1,
    "adapterViewChildPosition": -1,
    "groupViewChildPosition": 0,
    "resourceId": "com.badger.badgermap:id/radioBtn",
    "contentDescription": "",
    "text": "Normal"
  },
  {
    "className": "android.support.constraint.ConstraintLayout",
    "recyclerViewChildPosition": -1,
    "adapterViewChildPosition": -1,
    "groupViewChildPosition": 1,
    "resourceId": "com.badger.badgermap:id/rowCreateNewCheckInConstraintLayout",
    "contentDescription": "",
    "text": ""
  },
  {
    "className": "android.support.v7.widget.RecyclerView",
    "recyclerViewChildPosition": -1,
    "adapterViewChildPosition": -1,
    "groupViewChildPosition": 3,
    "resourceId": "com.badger.badgermap:id/recyclerViewOptions",
    "contentDescription": "",
    "text": ""
  }
]
  },
  {
"eventType": "DELAYED_MESSAGE_POSTED",
"timestamp": 1558518940996,
"actionCode": -1,
"delayTime": 20000,
"canScrollTo": true,
"elementDescriptors": []
 },
  {
   "eventType": "VIEW_TEXT_CHANGED",     // edittext value  after                                         
                                            scrolling. after this script 
                                             gets aborted
"timestamp": 1558518955414,
"replacementText": "222",
"actionCode": -1,
"delayTime": 0,
"canScrollTo": false,
"elementDescriptors": [
  {
    "className": "android.support.v7.widget.AppCompatEditText",
    "recyclerViewChildPosition": -1,
    "adapterViewChildPosition": -1,
    "groupViewChildPosition": 1,
    "resourceId": "com.badger.badgermap:id/textViewValue",
    "contentDescription": "",
    "text": ""
  },
  {
    "className": "android.widget.RelativeLayout",
    "recyclerViewChildPosition": -1,
    "adapterViewChildPosition": -1,
    "groupViewChildPosition": 2,
    "resourceId": "com.badger.badgermap:id/MassUpdateLayout",
    "contentDescription": "",
    "text": ""
  },
  {
    "className": "android.support.v7.widget.RecyclerView",
    "recyclerViewChildPosition": -1,
    "adapterViewChildPosition": -1,
    "groupViewChildPosition": 3,
    "resourceId": "com.badger.badgermap:id/recyclerViewAdditionalFields",
    "contentDescription": "",
    "text": ""
  }
]
 },
3 метода стилизации элементов HTML
3 метода стилизации элементов HTML
Когда дело доходит до применения какого-либо стиля к нашему HTML, существует три подхода: встроенный, внутренний и внешний. Предпочтительным обычно...
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
1
0
601
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В данном случае проблема не в прокрутке, а в том, что на данный момент Robo Script Recorder (RSR) рассматривает RecyclerView только тогда, когда действия выполняются над их непосредственными дочерними элементами. Если бы это было так, RSR записал бы индекс RecyclerView элемента, над которым было выполнено действие, и при воспроизведении этого скрипта Robo прокручивал бы этот элемент как часть выполнения записанного действия (т. е. не нужно было бы записывать выделенную прокрутку). действие).

Однако в вашем случае элемент, над которым было выполнено действие, является внуком RecyclerView. В результате RSR не учла RecyclerView и не зафиксировала индекс RecyclerView элемента в записанном скрипте. Следовательно, при воспроизведении скрипта Robo не прокрутил до элемента и, следовательно, не смог найти его на экране.

Если вы заинтересованы в поддержке действий над не непосредственными дочерними элементами RecyclerViews, не стесняйтесь отправить запрос функции https://issuetracker.google.com/issues/new?component=192775. Обратите внимание, что эта ссылка приведет вас к отправке запроса функции для регистратора тестов эспрессо (ETR), но и ETR, и RTR имеют общий доступ. та же логика записи для RecyclerViews.

Спасибо за ваш ответ. Но я не думаю, что есть проблема с RSR, потому что тот же скрипт успешно выполняет все действия, когда я тестировал его на планшетном устройстве (потому что нам не нужно прокручивать там, поскольку он охватывает весь текст редактирования сразу). Но это прерывается для мобильного физического устройства.

Tapash 23.05.2019 12:24

Сценарий дает сбой всякий раз, когда для выполнения действия требуется прокрутка, поскольку действие не было записано как действие для элемента RecyclerView, и, таким образом, Robo не знает, как найти затронутый элемент, если его нет на экране. Если действие было записано как действие над элементом RecyclerView, Robo сможет воспроизвести его независимо от того, требуется прокрутка или нет. Таким образом, правильный способ записать это действие — записать его как действие над элементом RecyclerView.

Stanislav Negara 23.05.2019 20:12

Другие вопросы по теме