ios xcode swift2 xcode7 xcode-ui-testing

ios - UI Testing XCode 7- no puede acceder al elemento dentro de la subvista



swift2 xcode7 (2)

Estoy intentando acceder a un elemento dentro de una subvista y me es imposible hacerlo.

La jerarquía es:

Controlador de vista:

  • Ver
    • tempView
    • userEnterView
      • zipCodeEntered

Quiero acceder al campo de texto zipCodeEntered. Tengo una etiqueta de accesibilidad llamada "zipCodeEntered".

Cuando intento registrar la automatización, solo registra la supervista "userEnterView" y no el campo de texto real al que puedo acceder.

Imprimo "app.otherElements [SUPER_VIEW_NAME] .debugDescription" para ver qué elementos están en esa jerarquía y no imprime ninguno.

¿Alguna idea de por qué no puedo acceder a estos elementos / cómo puedo acceder a ellos?


Las subvistas no son accesibles porque la vista principal no es una vista de contenedor. Desde la sección Cómo hacer que tu aplicación de iOS sea accesible desde la Guía de programación de accesibilidad:

Desde la perspectiva de la accesibilidad, una vista personalizada es una vista individual o una vista de contenedor. Una vista individual no contiene ninguna otra vista que deba ser accesible.

Una vista de contenedor, por otro lado, contiene otros elementos con los que los usuarios pueden interactuar.

Para hacer que las subvistas sean accesibles, la vista padre debe decirle a UIAccessibility que es un contenedor de accesibilidad devolviendo NO desde -isAccessibilityElement e implementando los métodos del protocolo UIAccessibilityContainer .


También encontré este problema en mi UITableView. Mi celda tiene un contenedorView (UIView) que tiene subvistas (TextView, UIButton ...) y un collectionView con sus celdas.

Intenté la respuesta aceptada, pero no funcionó. (La Grabadora de UI o el código manual no reconocían mis subelementos). Pero a veces descubrí que el UITest reconoció repentinamente mis subelementos cuando activé algo para actualizar la tabla.

Así que ahora sé si UITest no puede encontrar mis subvistas, invoco tableView.reloadData para actualizar la vista, y luego todo el problema se ha ido.

De todos modos, esto es solo una solución, espero que Apple pueda solucionarlo lo antes posible.