verificar saber obtener modal esta elemento atributo abierto xcode swift ui-testing xcode-ui-testing

xcode - obtener - saber si un elemento es visible javascript



Comprobando si un elemento es visible con XCode 7 UITest (6)

1) Estoy probando la interfaz de usuario con Swift en Xcode 7.3 y uso tanto .hittable como .exist para comprobar si una etiqueta está oculta o no y ambas funcionan. Realizo pruebas para ''verdadero'' y ''falso'' para asegurarme de que de cualquier manera coincida con el resultado.

Tengo una etiqueta cuyo texto estático es "Información de la pista" y está configurada para ocultarse cuando la aplicación se carga por primera vez, luego, presiono un botón para mostrar la etiqueta, y aquí está el resultado después de que se muestra la etiqueta.

// prueba falla

let trackInfoLabel = app.staticTexts["Track info"] XCTAssertEqual(trackInfoLabel.exists, true) XCTAssertEqual(trackInfoLabel.hittable, true)

// pases de prueba

XCTAssertEqual(trackInfoLabel.exists, false) XCTAssertEqual(trackInfoLabel.hittable, false)

// pases de prueba

let trackInfoLabel = app.staticTexts["Track Info"] XCTAssertEqual(trackInfoLabel.exists, true) XCTAssertEqual(trackInfoLabel.hittable, true)

// prueba falla

XCTAssertEqual(trackInfoLabel.exists, false) XCTAssertEqual(trackInfoLabel.hittable, false)

Leter encendido cuando presiono el botón para ocultar la etiqueta, todos los resultados se vuelven opuestos. Esto confirma que ambas propiedades (hittable y existe) funcionan para la configuración de label.hidden.

2) Otra forma de averiguar si un elemento está oculto, lo puede hacer es element.frame.size.width == 0 || element.frame.size.height == 0

Quiero verificar si un elemento es visible o no dependiendo de su propiedad .hidden , pero no encuentro una forma válida de hacerlo utilizando el nuevo Xcode 7 UI test test.

He intentado con myelement.exists y myelement.hittable pero no parece funcionar como esperaba. Supongo que trabajan en conjunto con la propiedad hidden . Un elemento oculto no debería existir y no se puede golpear ... pero este no es el comportamiento actual (puedo entender el comportamiento exists ... pero un elemento oculto no debe ser IMO golpeable).

¿Hay otra forma de verificar el valor de la propiedad "oculta"?


El siguiente código funcionó para mí. Al final de la prueba puede pasar el código de la siguiente manera:

while ([app.staticTexts matchingIdentifier:@"accesibilityId"].count > 0) { sleep(1); }


Estoy de acuerdo en que Hittable no siempre funciona con los botones (Swift 2.0, XCode 7.2)

Acabo de descubrir que si el botón está visible, puede encontrarlo SOLAMENTE entre los botones, mientras que si el botón está oculto, ¡también puede encontrar su etiqueta en staticTexts!

XCTAssertFalse(app.buttons["Log out"].exists && app.staticTexts["Log out"].exists) // This button is visible (hidden = false) XCTAssert(app.buttons["Log in"].exists && app.staticTexts["Log in"].exists) // This one is hidden

Hacky, pero trabaja para botones. Apple debería simplemente introducir .hidden o .visible largo de .hittable y .exists


Mi solución es agregar el identificador de accesibilidad dinámicamente

func someMethod() { label.isHidden = true label. accessibilityIdentifier = "isHidden" } func someOtherMethod { label.isHidden = false label. accessibilityIdentifier = "isVisible" }

y en la UITest puedes usarlo como

if app.staticTexts["MyLabel"].identifier == "isHidden" { dosomething() }


XCUIElement.hittable funciona para mí (en mi caso de prueba particular en el que estoy comprobando la visibilidad de varios elementos de UIButton) - bastante seguro de que no es una forma correcta de hacerlo


A partir de Xcode 7.1 Beta 3, las pruebas de UI actualmente no admiten la validación de la visibilidad de un elemento. Sugiero archivar un radar para llamar la atención necesaria a Apple.

Xcode 7.1 ha solucionado este problema. hittable ahora verifica si el elemento es correcto.