Firebase Roboscript 由于 android Studio 记录 robo 脚本无法记录页面滚动事件而中止

Firebase Roboscript aborted due to android Studio record robo script can't record page scroll event

我已经从 android studio 录制了一个 robo 脚本(android studio ->tools->Firebase->test Lab-> record robo script)。在我的 activity 我有一个 recyclerview 由大约 20 个值(编辑文本)组成,如 create.png 图像所示。因此,当我通过滚动回收器视图将值放入所有 20 个编辑文本中来记录此 activity 的机器人脚本时。然后我将此脚本文件连同构建的 .apk 文件上传到 firebase 测试实验室。但是在测试结果中显示"roboscript gets aborted"。这个错误是针对滚动后填充的编辑文本值。那么有什么方法可以在录制时在 robo 脚本中添加滚动事件,因为目前 android studio 不录制任何滚动事件?Click here for create.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": ""
  }
]
 },

在这种情况下,问题不在于滚动,而在于到目前为止,Robo Script Recorder (RSR) 仅在对 RecyclerView 的直接子项执行操作时才考虑 RecyclerView。如果是这种情况,RSR 将记录对其执行操作的元素的 RecyclerView 索引,并且在重放此脚本时,Robo 将滚动到该元素作为执行记录操作的一部分(即,无需记录专用滚动动作)。

但是,在您的情况下,对其执行操作的元素是 RecyclerView 的孙元素。结果,RSR 没有考虑 RecyclerView,也没有在录制的脚本中捕获元素的 RecyclerView 索引。因此,在重播脚本时,Robo 没有滚动到该元素,因此无法在屏幕上找到它。

如果您有兴趣支持对 RecyclerViews 的 non-immediate 个子项的操作,请随时提交功能请求 https://issuetracker.google.com/issues/new?component=192775 请注意,此 link 将引导您提交功能请求 Espresso 测试记录器 (ETR),但 ETR 和 RTR 共享相同的 RecyclerViews 记录逻辑。