2015-10-20 16 views
23

Voglio verificare se un elemento è visibile o meno in base alla sua proprietà .hidden ma non trovo un modo valido per farlo utilizzando il nuovo test di Xcode 7.Verifica se un elemento è visibile con XCode 7 UITest

Ho provato con myelement.exists e myelement.hittable ma non sembra funzionare come mi aspettavo. Suppongo che funzionino in congiunzione con la proprietà hidden. Un elemento nascosto non dovrebbe esistere e non è hittable ... ma questo non è il comportamento corrente (posso capire il comportamento exists ... ma un elemento nascosto non dovrebbe essere IMO hittabile).

C'è un altro modo per verificare il valore della proprietà "nascosto"?

risposta

23

A partire da Xcode 7.1 Beta 3, l'UI Testing non supporta attualmente la convalida della visibilità di un elemento. Suggerisco di archiviare un radar per portare l'attenzione necessaria ad Apple.

Xcode 7.1 ha risolto questo problema. hittable ora controlla se l'elemento è corretto.

+2

Questo non funziona per me su Xcode 7.1. Aggiorno alcuni controlli a nascosto in modo dinamico e verifica in seguito e questo restituisce sempre true, anche se il controllo è ovviamente nascosto. – Alex

+0

Xcode 7.2 test hittable non funziona correttamente per gli elementi nascosti, sia –

+0

Xcode 7.2.1 test hittable non funziona correttamente per gli elementi nascosti – san

3

XCUIElement.hittable funziona per me (nel mio caso particolare di prova in cui sto controllando diversi elementi UIButton per visibilità) - abbastanza sicuro che non è un modo giusto per farlo anche se

2

codice successivo ha lavorato per me. Alla fine del test si può codice passato come segue:

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

Io sono d'accordo hittable non sempre funziona per i pulsanti (Swift 2.0, XCode 7.2)

Ho appena scoperto che se il pulsante è visibile , puoi trovarlo SOLO tra i pulsanti, mentre se il pulsante è nascosto, puoi trovare il suo tag anche in 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, ma funziona per i pulsanti. Apple dovrebbe introdurre solo .hidden o .visible lungo .hittable e .exists

5

1) sto testando l'interfaccia utente con rapido in Xcode 7.3 e utilizzando sia .hittable e .exists a verificare che l'etichetta è nascosto o meno e entrambi lavorano. Eseguo il test per "true" e "false" per essere sicuro che in entrambi i casi sia d'accordo con il risultato.

Ho un'etichetta il cui testo statico è "Informazioni traccia" e impostato per essere nascosto quando l'app viene caricata per la prima volta, quindi in seguito premo un pulsante per mostrare l'etichetta, ed ecco il risultato dopo la visualizzazione dell'etichetta.

// test fallisce

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

XCTAssertEqual(trackInfoLabel.hittable, true) 

// test passa

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

// test passa

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

XCTAssertEqual(trackInfoLabel.hittable, true) 

// test fallisce

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

Lettere accese quando premo il pulsante per nascondere l'etichetta, tutti i risultati vengono girati di fronte. Ciò conferma che entrambe le proprietà (hittable ed esiste) funzionano per label.hidden.

2) Un altro modo per scoprire se un elemento è nascosto, si può fare element.frame.size.width == 0 || element.frame.size.height == 0

Problemi correlati