Reactivo sólido Detección de elementos nativos utilizando Appium

Estoy usando React Native para desarrollar una aplicación que requiere testings de extremo a extremo.

Procediendo de un background Selenium WebDriver, me parece que encontrar elementos en Appium puede ser muy incómodo en comparación con WebDriver, ya que los componentes nativos solo tienen ID y una sola class no definida por el usuario.

  1. ¿Hay alguna manera de agregar algún tipo de metadatos a los elementos para que sean fáciles de encontrar?

Diga si tengo una tabla con elementos complejos dentro de una celda, y primero necesito encontrar la fila correcta, luego la celda y luego search los componentes correctos para manipular dentro de la celda.

Idealmente, quisiera poder enumerar filas buscando algo como "myTargetRows". Eso me daría una list de filas.

  1. Si lo comprendo correctamente, no hay dos componentes que puedan tener el mismo ID en las aplicaciones nativas, así que no puedo usar ID como ese, ¿no? (Es decir, use el mismo ID, "myTargetRows", para múltiples componentes de fila).
  2. De lo contrario, ¿debería usar ID numeradas como "myTargetRow0", "myTargetRow1", etc., y luego utilizar XPath para hacer coincidir parcialmente el ID?
  3. ¿No hay una mejor manera?
  4. Si puedo hacer algo así, ¿puedo encadenar esas llamadas findElement para encontrar los elementos nesteds adecuados que deseo?

Ps: No quiero codificar las jerarquías exactas de los componentes en mis localizadores para evitar invalidarlos si muevo algo en mis vistas, por lo que esas soluciones de apuntar y hacer clic no ayudarán.

Sal 2: Las soluciones deben funcionar tanto en Android como en iOS, incluso si necesito implementar algún tipo de abstracción para ello.

Debería utilizar los accesorios AccessibilityLabel de View.

accessibilityLabel PropTypes.node

Anula el text que lee el lector de pantalla cuando el usuario interactúa con el elemento. Por defecto, la label se construye atravesando todos los niños y acumulando todos los nodos de Texto separados por espacio.

Más información se puede encontrar aquí

Para ids únicos, digamos que tiene una vista de list y 100 filas. Puede combinar rowId y text estático para accessibilityLabel .

ej .: 0_MyCustomRow, 1_MyCustomRow