2015-10-20 17 views
23

Ich möchte prüfen, ob ein Element sichtbar ist oder nicht, abhängig von seiner Eigenschaft .hidden, aber ich finde keinen gültigen Weg, dies mit den neuen Xcode 7 UI Testmaterial zu tun.Testen, ob ein Element mit XCode 7 sichtbar ist UITest

Ich habe mit myelement.exists und myelement.hittable versucht, aber sie scheint nicht zu funktionieren, wie ich erwartet hatte. Ich nehme an, sie arbeiten mit der hidden Eigenschaft zusammen. Ein verstecktes Element sollte nicht existieren und nicht hitbar sein ... aber das ist nicht das aktuelle Verhalten (ich kann das exists Verhalten verstehen ... aber ein verstecktes Element sollte nicht hitable IMO sein).

Gibt es eine andere Möglichkeit, den Wert der "versteckten" Eigenschaft zu überprüfen?

Antwort

23

Ab Xcode 7.1 Beta 3 unterstützt UI Testing derzeit nicht die Überprüfung der Sichtbarkeit eines Elements. Ich schlage vor, ein Radar zu plazieren, um Apple die nötige Aufmerksamkeit zu schenken.

Xcode 7.1 hat dieses Problem behoben. hittable überprüft nun, ob das Element korrekt ist.

+2

Dies funktioniert nicht für mich auf Xcode 7.1. Ich aktualisiere einige Steuerelemente, um sie dynamisch zu verstecken, und teste danach, und dies gibt immer wahr zurück, selbst wenn das Steuerelement offensichtlich verborgen ist. – Alex

+0

Xcode 7.2 hittable Test funktioniert nicht richtig für versteckte Elemente, entweder –

+0

Xcode 7.2.1 hitTable Test funktioniert nicht richtig für versteckte Elemente – san

3

XCUIElement.hittable funktioniert für mich (in meinem speziellen Testfall, wo ich mehr UIButton Elemente für Sichtbarkeit bin Überprüfung) - ganz sicher, dass es nicht ein richtiger Weg, es zu tun, obwohl

2

Next-Code für mich gearbeitet. Am Ende des Tests vorbei Code wie folgt kann:

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

ich hittable stimmen immer für Tasten (Swift 2.0, XCode 7.2)

ich gerade entdeckt, dass, wenn die Taste sichtbar nicht funktioniert , Sie können es nur unter den Schaltflächen finden, und wenn die Schaltfläche ausgeblendet ist, können Sie es auch in staticTexts finden!

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, aber funktioniert für Tasten. Apple sollte .hidden oder .visible entlang .hittable und .exists nur vorstellen

5

1) Ich prüfe die Benutzeroberfläche mit schnellen in Xcode 7.3 und ich beide .hittable und .exists mit dem Zweck zu testen, ob ein Etikett verborgen ist oder nicht, und sie beide arbeiten. Ich prüfe nach 'wahr' und 'falsch', um sicherzustellen, dass beide Wege mit dem Ergebnis übereinstimmen.

Ich habe ein Label, dessen statischer Text "Track Info" ist und beim ersten Laden der App ausgeblendet wird. Später drücke ich eine Taste, um das Label anzuzeigen, und hier ist das Ergebnis, nachdem das Label angezeigt wurde.

// Test nicht

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

XCTAssertEqual(trackInfoLabel.hittable, true) 

// Test

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

// Test bestanden

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

XCTAssertEqual(trackInfoLabel.hittable, true) 

// test

XCTAssertEqual(trackInfoLabel.exists, false) 
XCTAssertEqual(trackInfoLabel.hittable, false) 
schlägt fehl

Leter an, wenn ich die Taste drücke, um das Etikett auszublenden, werden alle Ergebnisse umgekehrt. Dies bestätigt, dass beide Eigenschaften (hitable und exists) für die Einstellung label.hidden funktionieren.

2) Eine weitere Möglichkeit, herauszufinden, ob ein Element ausgeblendet ist, ist element.frame.size.width == 0 || element.frame.size.height == 0

Verwandte Themen