¿Cómo probar si el button navigationBar está habilitado / deshabilitado en la testing de interfaz de usuario en iOS?

En mi aplicación iOS, agregué testings de interfaz de usuario, donde necesito verificar si el button de navigation está habilitado / deshabilitado en un momento diferente.

Actualmente estoy usando:

XCUIElement* saveButton = self.app.navigationBars[@"TSSIDAddCardView"].buttons[@"Save"]; XCTAssertEqual(saveButton.hittable, YES); 

Sin embargo, esto siempre devuelve SÍ. La testing .exists devuelve SÍ también.

¿Alguien sabe cómo hacer la testing adecuada?

Puede get el componente de interfaz de usuario real a través de la propiedad de value .

Con eso puedes verificar si está habilitado o no.

Algo como:

 UIBarButtonItem *saveButton = self.app.navigationBars[@"TSSIDAddCardView"].buttons[@"Save"].value; XCTAssertTrue(saveButton.enabled); 

Entonces con la ayuda de @InsertWittyName encontré la solución:

 UIBarButtonItem *saveButton = self.app.navigationBars[@"TSSIDAddCardView"].buttons[@"Save"]; XCTAssertFalse(saveButton.enabled); 

XCUIElement ajusta a XCUIElementAttributes , que proporciona @property(readonly, getter=isEnabled) BOOL enabled; .

Entonces puedes hacer esto en tu XCUIElement* saveButton :

C objective

 XCTAssertEqual(saveButton.enabled, YES); 

Rápido

 XCTAssertEqual(saveButton.isEnabled, true)