2017-12-28 14 views
0

Ich versuche zu überprüfen, dass eine Tabellenansicht in meinem UI-Test mit einer bestimmten Anzahl von Zellen gefüllt wurde. Hier ist mein Code:UI-Test UITableView-Zellenanzahl

XCUIApplication().tables.element.swipeUp() 
let count = XCUIApplication().tables.element.children(matching: .cell).count 
XCTAssert(count > 0) 

Die Assertion schlägt fehl, da die count immer 0 ist, obwohl die Swipe nach oben scrollt die offensichtlich erfolgreich Tabellenansicht gefüllt. Ich habe auch versucht:

XCTAssert(app.tables.cells.count > 0) 

mit den gleichen Ergebnissen. Ich habe sogar ein leeres Projekt mit einer Tabellenansicht mit 3 statischen Zellen in nur einem Bildschirm erstellt, um alle möglichen Ablenkungen für den UI-Test zu entfernen, und es gibt immer noch 0 zurück. Ich teste auf iOS 11 mit Xcode 9.

+0

Nur eine alberne Vermutung ... Versuchen Sie visibleCells anstelle von Zellen? –

+0

visibleCells ist keine gültige Eigenschaft für die von app.tables zurückgegebene XCUIElementQuery. – damjandd

+0

Sie sollten einen Breakpoint zu Zeile hinzufügen, die mit 'let count = ...' beginnt. Führen Sie dann den Test aus, warten Sie, bis der Breakpoint aktiviert ist, und geben Sie im unteren Bereich, in dem alle Ausgaben angezeigt werden, den Namen "po app" ein. Dies sollte Ihnen eine Ansichtshierarchie geben, in der Sie überprüfen können, ob Sie Ihren Tisch dort haben. Hier können Sie Ergebnisse der Ansichtshierarchie posten (durch Bearbeiten der Frage). – lagoman

Antwort

1

Zellen werden nicht immer als Zellen registriert, abhängig davon, wie Sie Ihre Barrierefreiheit konfiguriert haben. Überprüfen Sie, ob die Accessibility tatsächlich Zellen in Xcode menu -> Open Developer Tool -> Accessibility Inspector sieht.

Es ist wahrscheinlich, was die Zugänglichkeit sieht staticTexts ist statt cells, je nach Layout-Code - in diesem Fall sollten Sie

XCTAssert(app.tables.staticTexts.count > 0) 

behaupten Wenn Sie Zellen wollen, konfigurieren Sie Ihre Zellen wie so in tableView:cellForItemAtIndexPath:

Dadurch wird die Zelle als Root-Element markiert, und nicht jede der Teilansichten der Zelle als eigenständige Elemente.

+0

Ausgezeichneter Punkt. Ich kann bestätigen, dass dies wie erwartet funktioniert. – damjandd

Verwandte Themen