Guía de referencia de scripts de Robo

Este documento proporciona información de referencia sobre los scripts de Robo, incluida la estructura, las capacidades, el uso, la grabación y las acciones. Los scripts Robo son pruebas que automatizan las tareas manuales de control de calidad (QA) para aplicaciones móviles y permiten la integración continua (CI) y las estrategias de prueba previas al lanzamiento. Un script de Robo es un archivo JSON que describe una secuencia de interfaz de usuario (UI) y otras acciones.

Puede crear un script Robo de las siguientes maneras:

  • Utilice la función de grabación de guiones de Robo.
  • Cree el script de Robo manualmente.
  • Grabe el script de Robo y luego edítelo manualmente.

Para obtener más información sobre el uso de secuencias de comandos de Robo, consulte Ejecutar una secuencia de comandos de Robo .

El script de Robo se proporciona para la prueba de Robo junto con otras entradas, como el paquete de aplicación de Android (APK) de la aplicación que se está probando.

El siguiente es un ejemplo de un script de Robo que registra a un usuario en una aplicación:

[
  {
    "eventType": "VIEW_TEXT_CHANGED",
    "replacementText": "user123",
    "elementDescriptors": [
      {
        "resourceId": "my.app.package:id/username"
      }
    ]
  },
  {
    "eventType": "VIEW_TEXT_CHANGED",
    "replacementText": "12345",
    "elementDescriptors": [
      {
        "resourceId": "my.app.package:id/password"
      }
    ]
  },
  {
    "eventType": "VIEW_CLICKED",
    "elementDescriptors": [
      {
        "resourceId": "my.app.package:id/login"
      }
    ]
  }
]

Estructura

Cada acción en un script de Robo se representa como un conjunto de uno o más pares de atributos y valores, que se describen en la siguiente tabla:

Atributo Descripción
eventType Especifica el tipo de acción, por ejemplo, hacer clic, editar texto, etc. Obligatorio para cada acción.
elementDescriptors Descriptores que identifican un widget de interfaz de usuario. Obligatorio para todas las acciones que tienen un widget de IU de destino, como hacer clic en un botón en particular.
optional Si se establece en true , esta acción se omite cuando no se puede realizar. Por ejemplo, esta acción se omite cuando no puede encontrar su widget de interfaz de usuario de destino en una pantalla, sin que falle el script de Robo que lo contiene. De forma predeterminada, el valor es false .
replacementText El texto para ingresar en el widget de IU de destino. Requerido para acciones de edición de texto.
swipeDirection Especifica la dirección del deslizamiento. Requerido para acciones de deslizamiento.
delayTime Especifica cuánto tiempo esperar, en milisegundos. Requerido para acciones de espera.
pointTapXCoordinate y pointTapYCoordinate Las coordenadas de píxeles X e Y del punto tocado. Mutuamente excluyentes con pointTapXPercent y pointTapYPercent . Requerido para acciones de toque de punto.
pointTapXPercent y pointTapYPercent El porcentaje de coordenadas X e Y del punto tocado. Mutuamente excluyentes con pointTapXCoordinate y pointTapYCoordinate . Requerido para acciones de toque de punto.

El siguiente es un ejemplo de un script de Robo con dos acciones sin widgets de IU de destino, lo que significa que estas acciones no funcionan en un widget de IU específico:

[
  {
    "eventType": "DELAYED_MESSAGE_POSTED",
    "delayTime": 3000
  },
  {
    "eventType": "PRESSED_BACK"
  }
]

Descriptores de elementos

Un descriptor de elemento identifica un widget de interfaz de usuario utilizando uno o más de los siguientes atributos de identificación:

Atributo Descripción
className
ancestorClassName Nombre de clase del antecesor de la jerarquía de la interfaz de usuario del elemento. Un ancestro es cualquiera de los nodos principales en la jerarquía de la interfaz de usuario del elemento, incluido el propio elemento.
resourceId
resourceIdRegex Expresión regular de Java para que coincida con resourceId .
contentDescription
contentDescriptionRegex Expresión regular de Java para que coincida con contentDescription .
text (que aparece en la pantalla)
textRegex Expresión regular de Java para hacer coincidir el text .
groupViewChildPosition , recyclerViewChildPosition o adapterViewChildPosition Representa la posición secundaria de un widget de interfaz de usuario según el tipo de widget principal.

Con frecuencia, estos atributos no están definidos, por ejemplo, es posible que un botón no tenga texto ni descripción de contenido. Incluso si algunos valores de atributos están presentes, es posible que no sean únicos en una pantalla de aplicación determinada (incluido resourceId ).

Por ejemplo, la diferenciación entre los elementos de una lista solo es posible mediante el uso de sus diferentes posiciones secundarias dentro de su widget principal. Esto significa que usar solo un descriptor de elemento para identificar un widget de interfaz de usuario suele ser insuficiente. Por lo tanto, el atributo elementDescriptors de una acción contiene una secuencia de descriptores de elementos que están ordenados de manera que el primero corresponde al widget de IU de destino, el segundo corresponde al widget principal del widget de IU de destino, y así sucesivamente. El widget de IU de destino de una acción coincide cuando todos sus descriptores de elementos coinciden con la subjerarquía del widget de IU correspondiente.

El siguiente es un ejemplo de una secuencia de comandos de Robo con un cambio de texto y acciones de clic, las cuales requieren que identifique el widget de IU de destino utilizando los descriptores de elementos proporcionados:

[
  {
    "eventType": "VIEW_TEXT_CHANGED",
    "replacementText": "John",
    "elementDescriptors": [
      {
        "className": "android.support.v7.widget.AppCompatEditText",
        "groupViewChildPosition": 0,
        "resourceId": "com.google.samples.apps.topeka:id/first_name"
      },
      {
        "className": "android.widget.FrameLayout",
        "groupViewChildPosition": 0
      },
      {
        "className": "android.support.design.widget.TextInputLayout",
        "groupViewChildPosition": 1
      }
    ]
  },
  {
    "eventType": "VIEW_CLICKED",
    "elementDescriptors": [
      {
        "className": "android.support.design.widget.FloatingActionButton",
        "groupViewChildPosition": 1,
        "resourceId": "com.google.samples.apps.topeka:id/done"
      },
      {
        "className": "android.widget.FrameLayout",
        "groupViewChildPosition": 1,
        "resourceId": "com.google.samples.apps.topeka:id/content"
      },
      {
        "className": "android.widget.FrameLayout",
        "groupViewChildPosition": 0,
        "resourceId": "com.google.samples.apps.topeka:id/sign_in_content"
      }
    ]
  }
]

Opciones de ejecución

Opcionalmente, puede prefijar la lista de acciones en un script de Robo con un objeto JSON que especifica las opciones de ejecución para ese script de Robo. Este encabezado de configuración comienza con la palabra clave roboscript seguida de una representación JSON de las opciones de ejecución deseadas.

Los scripts de Robo admiten las siguientes opciones de ejecución:

  • modo de executionMode : opciones de ejecución que se aplican cuando se ejecuta un script de Robo:
  • postscript : opciones de ejecución aplicadas después de que se completa un script de Robo:
    • terminate : si se establece en true , la prueba de Robo deja de rastrear una vez que se completa el script de Robo.

El siguiente es un ejemplo de un script de Robo ejecutado en modo strict que duerme durante tres segundos, después de lo cual se detiene el rastreo:

"roboscript": {
  "executionMode": {
    "strict": true
  },
  "postscript": {
    "terminate": true
  }
}
[
  {
    "eventType": "DELAYED_MESSAGE_POSTED",
    "delayTime": 3000
  }
]

Parámetros de la plantilla

Un parámetro de plantilla es un marcador de posición en un script de Robo que se reemplaza con el valor real cuando la prueba de Robo carga ese script de Robo para su ejecución. Los parámetros de la plantilla tienen el prefijo de un guión bajo doble seguido de un signo de porcentaje, y tienen un signo de porcentaje seguido de un guión bajo doble como prefijo.

Los scripts de Robo admiten el siguiente parámetro de plantilla:

  • __%APP_PACKAGE_NAME%__ : el nombre del paquete de la aplicación que se está probando.

El siguiente es un ejemplo de un script de Robo que detiene el proceso de prueba de la aplicación:

[
  {
    "eventType": "ADB_SHELL_COMMAND",
    "command": "am force-stop __%APP_PACKAGE_NAME%__"
  }
]

Comentarios

Un script de Robo puede contener líneas de comentarios, que son líneas que comienzan con # o // .

El siguiente es un ejemplo de un script Robo con un par de comentarios:

# Confirm a user account.
[
  {
    // Click the DONE button.
    "eventType": "VIEW_CLICKED",
    "elementDescriptors": [
      {
        "resourceId": "com.google.samples.apps.topeka:id/done"
      }
    ]
  }
]

Capacidades

De forma predeterminada, hasta que se completan todas las acciones de un script de Robo (o al menos se intenta), el script de Robo permanece activo. La prueba de Robo sigue intentando hacer coincidir una acción de script de Robo cada vez que selecciona una acción para realizar. Robo script emplea las siguientes técnicas para aumentar la robustez:

Técnica Descripción
Coincidencia parcial Si la acción de secuencia de comandos de Robo actual no puede coincidir por completo, los criterios de coincidencia se relajan y se vuelve a intentar la coincidencia. La coincidencia parcial no tiene en cuenta el descriptor del elemento más externo al hacer coincidir el widget de IU de destino de una acción de script de Robo.

Si la coincidencia parcial tiene éxito, la acción de script de Robo correspondiente se realiza como de costumbre. Esta técnica admite escenarios en los que la estructura de la aplicación cambia, por ejemplo, entre versiones de la aplicación, cuando se reorganizan los elementos de la pantalla.

Saltar acción actual Si la acción de script de Robo actual no puede coincidir total o parcialmente, Robo intenta hacer coincidir la acción de script de Robo posterior. Si la acción subsiguiente coincide total o parcialmente, la prueba de Robo omite (y nunca vuelve a) la acción actual del script de Robo y realiza la siguiente.

Esta técnica es compatible con escenarios en los que el comportamiento de la aplicación cambia entre versiones o es inestable, por ejemplo, cuando puede aparecer un cuadro de diálogo intermitente en diferentes pantallas durante la grabación frente a la reproducción de un script de Robo.

Suspender Si ni las acciones del script de Robo actuales ni las posteriores pueden coincidir total o parcialmente, el script de Robo se suspende temporalmente y la prueba de Robo elige una acción para realizar usando sus otras estrategias. Una vez completada esta acción, la prueba de Robo reanuda la ejecución del script de Robo.

Siempre que las acciones del script de Robo actuales o posteriores no puedan coincidir, el script de Robo permanece suspendido para cualquier cantidad de acciones. Por lo tanto, los scripts de Robo no necesariamente tienen que ser un prólogo para una prueba de Robo, y puede intercalar acciones de script de Robo con acciones de prueba de Robo estándar. Esta técnica es compatible con escenarios en los que el comportamiento de la aplicación es inestable o cuando los cambios entre las versiones de la aplicación son lo suficientemente grandes como para que la prueba de Robo necesite "llenar los vacíos" con sus acciones estándar.

Compatibilidad con RecyclerView y AdapterView

Los widgets secundarios de RecyclerView y AdapterView se cargan de forma dinámica y pueden mostrarse a muchos deslizamientos de la pantalla actual. Dado que el tamaño de una pantalla y la cantidad de deslizamientos necesarios para llegar a este niño son diferentes para los diferentes factores de forma del dispositivo, es mucho más sólido confiar en la posición de los datos del niño, que es absoluta. Es un enfoque menos sólido confiar en la cantidad de deslizamientos que se requieren para llevar a este niño a la pantalla y luego usar su posición en la pantalla.

Por lo tanto, el script de Robo captura las posiciones de datos absolutas de los elementos secundarios de RecyclerView que son objetivos de las acciones del script de Robo como recyclerViewChildPosition . El script de Robo también captura las posiciones de datos absolutas de los hijos de AdapterView que son objetivos de las acciones del script de Robo como adapterViewChildPosition .

Las acciones en los elementos secundarios RecyclerView y AdapterView se realizan en los siguientes pasos:

  1. La prueba Robo garantiza que el niño correspondiente se muestre en la pantalla a través de una acción de posicionamiento en el RecyclerView o AdapterView que lo contiene.

  2. Robo test realiza la acción registrada directamente en el elemento secundario, ya que ya se muestra en la pantalla.

El siguiente es un ejemplo de una acción de clic en un elemento secundario AdapterView ( android.widget.GridView ):

{
  "eventType": "VIEW_CLICKED",
  "elementDescriptors": [
    {
      "className": "com.google.samples.apps.topeka.widget.AvatarView",
      "adapterViewChildPosition": 5,
      "resourceId": "com.google.samples.apps.topeka:id/avatar",
      "contentDescription": "Avatar 6"
    },
    {
      "className": "android.widget.GridView",
      "groupViewChildPosition": 1,
      "resourceId": "com.google.samples.apps.topeka:id/avatars"
    },
    {
      "className": "android.widget.LinearLayout",
      "groupViewChildPosition": 1
    },
    {
      "className": "android.widget.LinearLayout",
      "groupViewChildPosition": 0
    }
  ]
}

El siguiente es un ejemplo de una acción de clic en un elemento secundario RecyclerView ( android.support.v7.widget.RecyclerView ):

{
  "eventType": "VIEW_CLICKED",
  "elementDescriptors": [
    {
      "className": "android.support.v7.widget.AppCompatTextView",
      "groupViewChildPosition": 1,
      "resourceId": "com.google.samples.apps.topeka:id/category_title"
    },
    {
      "className": "android.widget.FrameLayout",
      "recyclerViewChildPosition": 8,
      "resourceId": "com.google.samples.apps.topeka:id/category_item"
    },
    {
      "className": "android.support.v7.widget.RecyclerView",
      "groupViewChildPosition": 1,
      "resourceId": "com.google.samples.apps.topeka:id/categories"
    },
    {
      "className": "android.widget.FrameLayout",
      "groupViewChildPosition": 1,
      "resourceId": "com.google.samples.apps.topeka:id/category_container"
    },
    {
      "className": "android.widget.LinearLayout",
      "groupViewChildPosition": 0
    }
  ]
}

Grabe un script de Robo en Android Studio y ejecútelo en Test Lab

Puede crear una secuencia de comandos de Robo en Android Studio, que guarda la secuencia de comandos como un archivo JSON. A continuación, puede cargar el archivo JSON en Firebase Test Lab con la aplicación y ejecutar la prueba en consecuencia.

Cuando ejecuta una prueba de Robo con un script adjunto, la prueba de Robo primero recorre las acciones preestablecidas y luego explora la aplicación como de costumbre.

Para crear un archivo JSON de script de Robo en Android Studio, siga los pasos en Grabar un script de Robo usando Test Lab en Android Studio .

Acciones de secuencias de comandos de Robo

El siguiente atributo opcional común se aplica a todas las acciones:

  • description : ayuda a rastrear la ejecución de esta acción de script de Robo en los resultados de prueba de Robo.

Afirmación

Si la condición afirmada es verdadera, el script de Robo continúa con la siguiente acción, que podría ser otra afirmación. De lo contrario, la ejecución del script de Robo se detiene debido a una afirmación fallida y el resultado de la prueba es FALLIDO.

La siguiente tabla enumera los atributos requeridos:

Atributo Descripción
"eventType": "ASSERTION" --
contextDescriptor Describe el contexto afirmado o la condición.

descriptor de contexto

Un descriptor de contexto define el contexto/la condición usando uno o una combinación de los siguientes atributos:

Atributo Descripción
"condition": "element_present" Comprueba que un widget de interfaz de usuario que coincida con elementDescriptors o texto especificado por visionText esté presente en la pantalla.
"condition": "app_under_test_shown" Comprueba que la aplicación bajo prueba se ejecuta en primer plano.
"condition": "default_launcher_shown" Comprueba que se muestra la pantalla de inicio de un dispositivo, lo que significa que no hay aplicaciones ejecutándose en primer plano.
"condition": "non_roboscript_action_performed" Comprueba que la última acción realizada por la prueba de Robo no sea una acción de script de Robo.
negateCondition Si se establece en true , niega la condition . Por ejemplo, puede usar este atributo para verificar si un widget de IU NO está presente en la pantalla o si la aplicación que se está probando NO se está ejecutando en primer plano.
elementDescriptors Uno o más descriptores de elementos que identifican un widget de interfaz de usuario en la pantalla. Se utiliza en combinación con la condición element_present . Mutuamente excluyente con visionText . Para obtener más información, consulte Descriptores de elementos .
visionText El texto en la pantalla se detecta mediante la API de reconocimiento óptico de caracteres (OCR). visionText se usa en combinación con la condición element_present . Mutuamente excluyente con elementDescriptors .

El siguiente es un ejemplo de una aserción de secuencia de comandos de Robo que comprueba que la aplicación que se está probando está en primer plano:

{
  "eventType": "ASSERTION",
  "contextDescriptor": {
    "condition": "app_under_test_shown"
  }
}

El siguiente es un ejemplo de una aserción de secuencia de comandos de Robo que verifica que un widget de interfaz de usuario con el ID de recurso "com.google.samples.apps.topeka:id/done" esté presente en una pantalla:

{
  "eventType": "ASSERTION",
  "contextDescriptor": {
    "condition": "element_present",
    "elementDescriptors": [
      {
        "resourceId": "com.google.samples.apps.topeka:id/done"
      }
    ]
  }
}

El siguiente es un ejemplo de una aserción de script de Robo que verifica que "Settings" NO se detecte en una pantalla usando OCR:

{
  "eventType": "ASSERTION",
  "contextDescriptor": {
    "condition": "element_present",
    "negateCondition": true,
    "elementDescriptors": [
      {
        "visionText": "Settings"
      }
    ]
  }
}

Hacer clic

La siguiente tabla enumera los atributos requeridos:

Atributo Descripción
eventType Especifica el tipo de acción de script de Robo.
"eventType": "VIEW_CLICKED" Hace clic en el elemento de destino de la aplicación bajo prueba.
"eventType": "SOFT_KEYBOARD_CLICK" Hace clic en el elemento de destino del teclado virtual.
"eventType": "SOFT_KEYBOARD_RANDOM_CLICK" Hace clic en elementos aleatorios del teclado virtual hasta maxNumberOfRuns veces.
"eventType": "LIST_ITEM_CLICKED" Lo utiliza Robo script recorder en Android Studio para hacer clic en los elementos de la lista.
elementDescriptors Identifica el widget de la interfaz de usuario en el que se hizo clic mediante la jerarquía de la interfaz de usuario de Android. Mutuamente excluyente con visionText .
visionText Identifica el elemento en el que se hizo clic mediante OCR. Mutuamente excluyente con elementDescriptors .
maxNumberOfRuns Especifica cuántas veces hacer clic en un elemento aleatorio del teclado virtual, cuando eventType es SOFT_KEYBOARD_RANDOM_CLICK . El valor predeterminado es 1 .

El siguiente es un ejemplo de una acción de script de Robo que hace clic en un botón con el ID de recurso "com.google.samples.apps.topeka:id/done" :

{
  "eventType": "VIEW_CLICKED",
  "elementDescriptors": [
    {
      "resourceId": "com.google.samples.apps.topeka:id/done"
    }
  ]
}

El siguiente es un ejemplo de una acción de script de Robo que hace clic en "Privacy Policy" detectada en una pantalla usando OCR:

{
  "eventType": "VIEW_CLICKED",
  "elementDescriptors": [
    {
      "visionText": "Privacy Policy"
    }
  ]
}

El siguiente es un ejemplo de una acción de script de Robo que hace clic en un elemento de teclado virtual con una descripción de contenido "Emoji button" :

{
  "eventType": "SOFT_KEYBOARD_CLICK",
  "elementDescriptors": [
    {
      "contentDescription": "Emoji button"
    }
  ]
}

El siguiente es un ejemplo de una acción de script de Robo que hace clic en elementos aleatorios del teclado en pantalla hasta cinco veces:

{
  "eventType": "SOFT_KEYBOARD_RANDOM_CLICK",
  "maxNumberOfRuns": 5
}

Deshabilitar teclado virtual

La siguiente tabla enumera los atributos requeridos:

Atributo Descripción
"eventType": "DISABLE_KEYBOARD" --

El siguiente es un ejemplo de una acción de script de Robo que deshabilita el teclado en pantalla:

{
  "eventType": "DISABLE_KEYBOARD"
}

Ejecutar comando de shell adb

La siguiente tabla enumera los atributos requeridos:

Atributo Descripción
"eventType": "ADB_SHELL_COMMAND" --
command El comando de shell Android Debug Bridge (adb) para ejecutar.

El siguiente es un ejemplo de una acción de script de Robo que borra los datos de usuario de la aplicación en prueba:

{
  "eventType": "ADB_SHELL_COMMAND",
  "command": "pm clear __%APP_PACKAGE_NAME%__"
}

Otorgar permisos

Esta acción es registrada por Robo script recorder en Android Studio para compatibilidad con versiones anteriores de Espresso Test Recorder . La prueba Robo otorga todos los permisos a la aplicación bajo prueba al comienzo de cada rastreo y, por lo tanto, esta acción no es operativa. NO use esta acción en sus scripts de Robo.

La siguiente tabla enumera los atributos requeridos:

Atributo Descripción
"eventType": "PERMISSIONS_REQUEST" --

Texto de entrada

La siguiente tabla enumera los atributos requeridos:

Atributo Descripción
eventType Especifica el tipo de acción de script de Robo.
"eventType": "VIEW_TEXT_CHANGED" Introduce el texto dado en el widget de IU de destino.
"eventType": "ENTER_TEXT" ingresa el texto dado en el widget de IU de destino y luego envía un evento KEYCODE_ENTER a este widget de IU.
elementDescriptors Identifica el widget de IU de destino mediante la jerarquía de IU de Android.
replacementText El texto para ingresar en el widget de IU de destino.

El siguiente es un ejemplo de una acción de script de Robo que ingresa "John" en un widget de IU con el ID de recurso "com.google.samples.apps.topeka:id/first_name" :

{
  "eventType": "VIEW_TEXT_CHANGED",
  "replacementText": "John",
  "elementDescriptors": [
    {
      "resourceId": "com.google.samples.apps.topeka:id/first_name"
    }
  ]
}

Clic largo

La siguiente tabla enumera los atributos requeridos:

Atributo Descripción
"eventType": "VIEW_LONG_CLICKED" --
elementDescriptors Identifica el widget de IU de destino mediante la jerarquía de IU de Android.

El siguiente atributo es opcional:

  • delayTime : especifica cuánto tiempo debe durar la presión hacia abajo de un clic largo, en milisegundos.

El siguiente es un ejemplo de una acción de script de Robo que realiza un clic de cinco segundos en un widget de interfaz de usuario con la descripción de contenido "Avatar 8" :

{
  "eventType": "VIEW_LONG_CLICKED",
  "elementDescriptors": [
    {
      "contentDescription": "Avatar 8"
    }
  ],
  "delayTime": 5000
}

Realizar un gesto de un punto

La siguiente tabla enumera los atributos requeridos:

Atributo Descripción
"eventType": "ONE_POINT_GESTURE" --
coordinates Dos coordenadas para un gesto de un punto, formateadas como "(x1,y1)->(x2,y2)" como porcentajes o píxeles.

El siguiente es un ejemplo de una acción de gesto de un punto de script de Robo que realiza un deslizamiento hacia abajo:

{
  "eventType": "ONE_POINT_GESTURE",
  "coordinates": "(50%,25%)->(50%,75%)"
}

Realizar un gesto de dos puntos

La siguiente tabla enumera los atributos requeridos:

Atributo Descripción
"eventType": "TWO_POINT_GESTURE" --
coordinates Cuatro coordenadas para un gesto de dos puntos, formateadas como "(x1,y1)->(x2,y2),(x3,y3)->(x4,y4)" como porcentajes o píxeles.

El siguiente es un ejemplo de una acción de script de Robo que realiza un gesto de pellizcar:

{
  "eventType": "TWO_POINT_GESTURE",
  "coordinates": "(50%,50%)->(25%,50%),(50%,50%)->(75%,50%)"
}

Realizar una acción de IME

Esta acción presiona el botón de acción actual, por ejemplo, siguiente, listo y buscar, en el Editor de métodos de entrada (IME) para el widget de IU de destino especificado.

La siguiente tabla enumera los atributos requeridos:

Atributo Descripción
"eventType": "PRESSED_EDITOR_ACTION" --
elementDescriptors Identifica el widget de IU de destino mediante la jerarquía de IU de Android.

El siguiente es un ejemplo de una acción de secuencia de comandos Robo que realiza una acción IME en un widget de interfaz de usuario con el ID de recurso "com.google.samples.apps.topeka:id/first_name" :

{
  "eventType": "PRESSED_EDITOR_ACTION",
  "elementDescriptors": [
    {
      "resourceId": "com.google.samples.apps.topeka:id/first_name"
    }
  ]
}

Rechazar

La siguiente tabla enumera los atributos requeridos:

Atributo Descripción
eventType Especifica el tipo de acción de script de Robo.
"eventType": "PRESSED_BACK" Envía un evento KEYCODE_BACK al dispositivo.
"eventType": "PRESSED_BACK_EMULATOR_28" Utilizado por la grabadora de scripts Robo en Android Studio para presionar hacia atrás en los emuladores API 28.

El siguiente es un ejemplo de una acción de script de Robo que presiona hacia atrás:

{
  "eventType": "PRESSED_BACK"
}

Presione Inicio

Esta acción envía un evento KEYCODE_HOME al dispositivo.

La siguiente tabla enumera los atributos requeridos:

Atributo Descripción
"eventType": "GO_HOME" --

El siguiente es un ejemplo de una acción de script de Robo que presiona inicio:

{
  "eventType": "GO_HOME"
}

Desplazar un elemento a la vista

Esta acción hace que la prueba Robo desplace hacia adelante el widget de IU que coincide con los elementDescriptors especificados hasta que el widget de IU que coincide con los childElementDescriptors especificados esté presente en la pantalla, o el widget desplazado ya no se pueda desplazar, o se alcance el número máximo de 50 desplazamientos.

La siguiente tabla enumera los atributos requeridos:

Atributo Descripción
"eventType": "ELEMENT_SCROLL_INTO_VIEW" --
elementDescriptors Identifica el widget de IU desplazado mediante la jerarquía de IU de Android.
childElementDescriptors Identifica el widget de la interfaz de usuario para desplazarse mediante la jerarquía de la interfaz de usuario de Android.

El siguiente es un ejemplo de una acción de script de Robo que desplaza el widget de la IU con el ID de recurso "my.app.package:id/scrollable_card_container" hasta que el widget de la IU con el texto "Orange" está presente en la pantalla (o no se pueden realizar más desplazamientos). ejecutarse, o se alcanza el número máximo de 50 pergaminos):

{
  "eventType": "ELEMENT_SCROLL_INTO_VIEW",
  "elementDescriptors": [
    {
      "resourceId": "my.app.package:id/scrollable_card_container"
    }
  ],
  "childElementDescriptors": [
    {
      "text": "Orange"
    }
  ]
}

Golpe fuerte

La siguiente tabla enumera los atributos requeridos:

Atributo Descripción
"eventType": "VIEW_SWIPED" --
swipeDirection Especifica la dirección del deslizamiento:
  • Left
  • Right
  • Up
  • Down
  • Forward : hacia Down o hacia la Right según la capacidad de desplazamiento vertical u horizontal del widget de IU de destino.
  • Backward : hacia Up o hacia la Left según la capacidad de desplazamiento vertical u horizontal del widget de IU de destino.
elementDescriptors Identifica el widget de IU de destino mediante la jerarquía de IU de Android.

El siguiente es un ejemplo de una acción de script de Robo que desliza hacia arriba un widget de UI con el ID de recurso "my.app.package:id/custom_content" :

{
  "eventType": "VIEW_SWIPED",
  "swipeDirection": "Up",
  "elementDescriptors": [
    {
      "resourceId": "my.app.package:id/custom_content"
    }
  ]
}

Tomar captura de pantalla

La siguiente tabla enumera los atributos requeridos:

Atributo Descripción
"eventType": "TAKE_SCREENSHOT" --
screenshotName Especifica el nombre del archivo de captura de pantalla.

El siguiente es un ejemplo de una acción de script de Robo que toma una captura de pantalla:

{
  "eventType": "TAKE_SCREENSHOT",
  "screenshotName": "my_screenshot"
}

Toque un punto en la pantalla

La siguiente tabla enumera los atributos requeridos:

Atributo Descripción
"eventType": "POINT_TAP" --
pointTapXCoordinate La coordenada X del píxel del punto tocado. Mutuamente excluyentes con pointTapXPercent y pointTapYPercent .
pointTapYCoordinate La coordenada Y del píxel del punto tocado. Mutuamente excluyentes con pointTapXPercent y pointTapYPercent .
pointTapXPercent La coordenada X porcentual del punto tocado. Mutuamente excluyentes con pointTapXCoordinate y pointTapYCoordinate .
pointTapYPercent La coordenada Y porcentual del punto tocado. Mutuamente excluyentes con pointTapXCoordinate y pointTapYCoordinate .

El siguiente es un ejemplo de una acción de script de Robo que toca en medio de una pantalla:

{
  "eventType": "POINT_TAP",
  "pointTapXPercent": 50,
  "pointTapYPercent": 50
}

Toque un punto dentro de un elemento

La siguiente tabla enumera los atributos requeridos:

Atributo Descripción
"eventType": "POINT_TAP_ELEMENT" --
pointTapXPercent La coordenada X porcentual dentro del elemento de destino.
pointTapYPercent La coordenada Y porcentual dentro del elemento de destino.
elementDescriptors Identifica el widget de IU de destino mediante la jerarquía de IU de Android.

El siguiente es un ejemplo de una acción de script de Robo que mueve el control deslizante de una barra de búsqueda hacia la derecha:

{
  "eventType": "POINT_TAP_ELEMENT",
  "pointTapXPercent": 80,
  "pointTapYPercent": 50,
  "elementDescriptors": [
    {
      "resourceId": "my.app.package:id/my_seekbar"
    }
  ]
}

Terminar rastreo

Esta acción detiene la prueba Robo.

La siguiente tabla enumera los atributos requeridos:

Atributo Descripción
"eventType": "TERMINATE_CRAWL" --

El siguiente es un ejemplo de una acción de script de Robo que detiene una prueba de Robo:

{
  "eventType": "TERMINATE_CRAWL"
}

Esperar

La siguiente tabla enumera los atributos requeridos:

Atributo Descripción
"eventType": "DELAYED_MESSAGE_POSTED" --
delayTime Especifica cuánto tiempo esperar, en milisegundos.

El siguiente es un ejemplo de una acción de script de Robo que espera tres segundos:

{
  "eventType": "DELAYED_MESSAGE_POSTED",
  "delayTime": 3000
}

Esperar un elemento

Esta acción hace que la prueba de Robo espere a que aparezca un elemento en la pantalla hasta el tiempo de espera especificado.

La siguiente tabla enumera los atributos requeridos:

Atributo Descripción
"eventType": "WAIT_FOR_ELEMENT" --
delayTime Especifica el tiempo de espera de espera, en milisegundos.
elementDescriptors Identifica el widget de IU esperado mediante la jerarquía de IU de Android.

El siguiente es un ejemplo de una acción de script de Robo que espera hasta 30 segundos para que aparezca en la pantalla un widget de interfaz de usuario con el ID de recurso "my.app.package:id/confirmation_button" :

{
  "eventType": "WAIT_FOR_ELEMENT",
  "delayTime": 30000,
  "elementDescriptors": [
    {
      "resourceId": "my.app.package:id/confirmation_button"
    }
  ]
}

Próximos pasos