在 robo 脚本记录器中创建后,将延迟插入到 robo 测试脚本中
Inserting delays into robo test script after creating it in the robo script recorder
自动创建的 rob 脚本不会在我知道我的应用在执行脚本设置操作时需要的地方插入延迟。我如何使用我认为可能的这两个选项中的任何一个,或者是否有批准的方法?我找不到任何脚本命令指南,所以我瞎了。
获取现有 "DELAYED_MESSAGE_POSTED" 的副本并将其移动到我想要增加延迟的位置。
编辑我想要额外延迟的事件的 "delayTime" before/after。
我已经尝试了#1 和#2,但在我的编辑之后脚本似乎不会 运行,所以要么这些不是解决这个问题的方法,要么我搞砸了。任何指导将不胜感激。
这是包含这两种方法的脚本片段。我在此脚本中的评论(仅针对此帖子,而不是在我 运行 的脚本中)以“<<<<-”开头。请注意,我没有包括整个脚本,只是我正在尝试的一个区域:
[
...
{
"eventType": "DELAYED_MESSAGE_POSTED",
"timestamp": 1570820588045,
"actionCode": -1,
"delayTime": 7000,
"canScrollTo": false,
"elementDescriptors": []
},
{
"eventType": "VIEW_CLICKED",
"timestamp": 1570820599551,
"replacementText": "",
"actionCode": -1,
"delayTime": 0,
"canScrollTo": false,
"elementDescriptors": [
{
"className": "androidx.appcompat.widget.AppCompatImageButton",
"recyclerViewChildPosition": -1,
"adapterViewChildPosition": -1,
"groupViewChildPosition": 2,
"resourceId": "com.jingleware.sosalert:id/ForwardArrow6",
"contentDescription": "",
"text": ""
},
{
"className": "android.widget.RelativeLayout",
"recyclerViewChildPosition": -1,
"adapterViewChildPosition": -1,
"groupViewChildPosition": 0,
"resourceId": "com.jingleware.sosalert:id/thanks",
"contentDescription": "",
"text": ""
},
{
"className": "android.widget.RelativeLayout",
"recyclerViewChildPosition": -1,
"adapterViewChildPosition": -1,
"groupViewChildPosition": 0,
"resourceId": "com.jingleware.sosalert:id/pager",
"contentDescription": "",
"text": ""
}
]
},
{ <<<<- added delay using the first method>
"eventType": "DELAYED_MESSAGE_POSTED",
"timestamp": 1570820605000, <<<<- Here's where I stuck in a value, not knowing what the effect would be
"actionCode": -1,
"delayTime": 1000,
"canScrollTo": false,
"elementDescriptors": []
},
{
"eventType": "VIEW_CLICKED",
"timestamp": 1570820606462,
"replacementText": "",
"actionCode": -1,
"delayTime": 0, <<<<- I tried to set this to 1000, without the discrete delay that's shown above
"canScrollTo": true,
"elementDescriptors": [
{
"className": "androidx.appcompat.widget.AppCompatButton",
"recyclerViewChildPosition": -1,
"adapterViewChildPosition": -1,
"groupViewChildPosition": 1,
"resourceId": "com.jingleware.sosalert:id/NameField",
"contentDescription": "",
"text": ""
},
{
"className": "android.widget.RelativeLayout",
"recyclerViewChildPosition": -1,
"adapterViewChildPosition": -1,
"groupViewChildPosition": 0,
"resourceId": "com.jingleware.sosalert:id/userinfoinfo",
"contentDescription": "",
"text": ""
},
{
"className": "android.widget.ScrollView",
"recyclerViewChildPosition": -1,
"adapterViewChildPosition": -1,
"groupViewChildPosition": 0,
"resourceId": "com.jingleware.sosalert:id/userinfoscroller",
"contentDescription": "",
"text": ""
},
{
"className": "android.widget.RelativeLayout",
"recyclerViewChildPosition": -1,
"adapterViewChildPosition": -1,
"groupViewChildPosition": 1,
"resourceId": "com.jingleware.sosalert:id/userinfo",
"contentDescription": "",
"text": ""
}
]
},
...
]
选项 #1 是正确的选择。您分配给 'timestamp' 的值可以从另一个事件中复制。在注入 'DELAYED_MESSAGE_POSTED' 的副本时,请确保生成的脚本是格式正确的 JSON(即需要逗号,没有不需要的逗号,括号匹配等)。查看您的示例脚本,我认为这是一个有效的更改,延迟应该有效(假设 1 秒的延迟足以让您的应用稳定下来)。
您提到选项 #1 更改后,您的脚本不会 运行。这是否意味着整个脚本未执行或它 运行s 直到执行某些操作然后失败?脚本执行在原始版本和修改版本之间有何不同(例如,它在哪个操作上失败)?谢谢!
自动创建的 rob 脚本不会在我知道我的应用在执行脚本设置操作时需要的地方插入延迟。我如何使用我认为可能的这两个选项中的任何一个,或者是否有批准的方法?我找不到任何脚本命令指南,所以我瞎了。
获取现有 "DELAYED_MESSAGE_POSTED" 的副本并将其移动到我想要增加延迟的位置。
编辑我想要额外延迟的事件的 "delayTime" before/after。
我已经尝试了#1 和#2,但在我的编辑之后脚本似乎不会 运行,所以要么这些不是解决这个问题的方法,要么我搞砸了。任何指导将不胜感激。
这是包含这两种方法的脚本片段。我在此脚本中的评论(仅针对此帖子,而不是在我 运行 的脚本中)以“<<<<-”开头。请注意,我没有包括整个脚本,只是我正在尝试的一个区域:
[
...
{
"eventType": "DELAYED_MESSAGE_POSTED",
"timestamp": 1570820588045,
"actionCode": -1,
"delayTime": 7000,
"canScrollTo": false,
"elementDescriptors": []
},
{
"eventType": "VIEW_CLICKED",
"timestamp": 1570820599551,
"replacementText": "",
"actionCode": -1,
"delayTime": 0,
"canScrollTo": false,
"elementDescriptors": [
{
"className": "androidx.appcompat.widget.AppCompatImageButton",
"recyclerViewChildPosition": -1,
"adapterViewChildPosition": -1,
"groupViewChildPosition": 2,
"resourceId": "com.jingleware.sosalert:id/ForwardArrow6",
"contentDescription": "",
"text": ""
},
{
"className": "android.widget.RelativeLayout",
"recyclerViewChildPosition": -1,
"adapterViewChildPosition": -1,
"groupViewChildPosition": 0,
"resourceId": "com.jingleware.sosalert:id/thanks",
"contentDescription": "",
"text": ""
},
{
"className": "android.widget.RelativeLayout",
"recyclerViewChildPosition": -1,
"adapterViewChildPosition": -1,
"groupViewChildPosition": 0,
"resourceId": "com.jingleware.sosalert:id/pager",
"contentDescription": "",
"text": ""
}
]
},
{ <<<<- added delay using the first method>
"eventType": "DELAYED_MESSAGE_POSTED",
"timestamp": 1570820605000, <<<<- Here's where I stuck in a value, not knowing what the effect would be
"actionCode": -1,
"delayTime": 1000,
"canScrollTo": false,
"elementDescriptors": []
},
{
"eventType": "VIEW_CLICKED",
"timestamp": 1570820606462,
"replacementText": "",
"actionCode": -1,
"delayTime": 0, <<<<- I tried to set this to 1000, without the discrete delay that's shown above
"canScrollTo": true,
"elementDescriptors": [
{
"className": "androidx.appcompat.widget.AppCompatButton",
"recyclerViewChildPosition": -1,
"adapterViewChildPosition": -1,
"groupViewChildPosition": 1,
"resourceId": "com.jingleware.sosalert:id/NameField",
"contentDescription": "",
"text": ""
},
{
"className": "android.widget.RelativeLayout",
"recyclerViewChildPosition": -1,
"adapterViewChildPosition": -1,
"groupViewChildPosition": 0,
"resourceId": "com.jingleware.sosalert:id/userinfoinfo",
"contentDescription": "",
"text": ""
},
{
"className": "android.widget.ScrollView",
"recyclerViewChildPosition": -1,
"adapterViewChildPosition": -1,
"groupViewChildPosition": 0,
"resourceId": "com.jingleware.sosalert:id/userinfoscroller",
"contentDescription": "",
"text": ""
},
{
"className": "android.widget.RelativeLayout",
"recyclerViewChildPosition": -1,
"adapterViewChildPosition": -1,
"groupViewChildPosition": 1,
"resourceId": "com.jingleware.sosalert:id/userinfo",
"contentDescription": "",
"text": ""
}
]
},
...
]
选项 #1 是正确的选择。您分配给 'timestamp' 的值可以从另一个事件中复制。在注入 'DELAYED_MESSAGE_POSTED' 的副本时,请确保生成的脚本是格式正确的 JSON(即需要逗号,没有不需要的逗号,括号匹配等)。查看您的示例脚本,我认为这是一个有效的更改,延迟应该有效(假设 1 秒的延迟足以让您的应用稳定下来)。
您提到选项 #1 更改后,您的脚本不会 运行。这是否意味着整个脚本未执行或它 运行s 直到执行某些操作然后失败?脚本执行在原始版本和修改版本之间有何不同(例如,它在哪个操作上失败)?谢谢!