viernes, 12 de junio de 2026

Que hacer cuando tengo varios elementos con el mismo id en Android/IOS

Buenas tardes lectores.


Uno de los grandes retos en la automatización móvil es lidiar con elementos que comparten el mismo resource-id o name, pero que no siempre contienen la información que necesitamos. Aquí es donde los selectores refinados con atributos adicionales se convierten en tus mejores aliados.

📱 Caso Android

El selector básico:

//android.view.View[@resource-id='alarmTagCounter']

trae múltiples elementos, algunos sin content-desc. Para enfocarte solo en el que realmente aporta valor, lo mejor es usar:


//android.view.View[@resource-id='alarmTagCounter' and @content-desc]
  • Cuándo aplicar: cuando necesitas validar accesibilidad o identificar un elemento que expone información en content-desc.

  • Por qué es bueno: evita falsos positivos, mejora la estabilidad de tus pruebas y asegura que interactúas con el elemento correcto.

  • Escenarios típicos: validación de etiquetas de accesibilidad, pruebas de UI donde el texto visible no es confiable, automatización de flujos con elementos dinámicos.

🍏 Caso iOS

El equivalente en iOS parte de:


//XCUIElementTypeStaticText[@name='alarmTagCounter']

pero para garantizar que el elemento tenga información útil en label, lo refinamos así:


//XCUIElementTypeStaticText[@name='alarmTagCounter' and @label]
  • Cuándo aplicar: cuando el name no es suficiente y necesitas validar que el label esté presente.

  • Por qué es bueno: incrementa la precisión, reduce el mantenimiento de scripts y asegura que tus pruebas reflejen la experiencia real del usuario.

  • Escenarios típicos: validación de textos renderizados, pruebas de accesibilidad, automatización de notificaciones o contadores visibles.

🌟 Beneficios generales

  • Robustez: reduces el riesgo de que tus pruebas fallen por cambios menores en la UI.

  • Mantenibilidad: al usar atributos semánticos (content-desc, label), tus scripts son más fáciles de entender y mantener.

  • Accesibilidad: promueves buenas prácticas al validar atributos pensados para usuarios con necesidades especiales.

  • Escalabilidad: puedes reutilizar estos patrones en múltiples escenarios y proyectos.

En conclusión, usar selectores como

  • //XCUIElementTypeStaticText[@name='alarmTagCounter' and @label]

  • //android.view.View[@resource-id='alarmTagCounter' and @content-desc]

es una estrategia clave para elevar la calidad de tu automatización móvil. No solo te ayudan a interactuar con los elementos correctos, sino que también fortalecen la confiabilidad de tus pruebas en entornos complejos.

Cabe recordar que esto no debería ocurrir dado que todos los elementos deberian ser únicos en interfaz, sin embargo siempre es bueno tener nuestro plan b.


Saludos.



No hay comentarios:

Publicar un comentario