Firebase Roboscript прерван из-за того, что android Studio не может записать событие прокрутки страницы - PullRequest
1 голос
/ 22 мая 2019

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

Ниже записан скрипт robo (файл .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": ""
  }
]
 },

1 Ответ

1 голос
/ 22 мая 2019

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

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

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

...