2017-06-08 1 views
1

Ich bin neu auf Xcode + iOS-Tests. Ich werde ui von einem bestehenden ios-Projekt in swift automatisieren. Das Problem ist, dass ich keine Tabellenansicht einer Ansicht finden kann. Hier ist mein Code, die ich auf der Suche nach einer Zelle verwendet, um aus der Tabellenansicht, aber das funktioniert nicht in diesem Fall:Finden Sie Tabellenzelle in XCode ui Test swift

 XCUIApplication().tables.cells.allElementsBoundByIndex[1].tap() 

I Screenshot der Ansicht Flusses bin Befestigung. Der ios code of view wird nicht von mir geschrieben. The events table view which i need to find in my ui testing

+0

Auch die automatische Aufnahme funktioniert auf diesem Bildschirm nicht. –

+1

Es gibt nicht genügend Informationen, um das Problem zu diagnostizieren. Alles, was wir sehen können, ist, dass es in Ihrer Ansichtshierarchie eine Tabellenansicht gibt, aber Sie versuchen, auf die zweite Zelle in der Tabellenansicht zuzugreifen, die möglicherweise nicht vorhanden ist. Bitte fügen Sie die Ausgabe von 'XCUIApplication(). Tables.cells.debugDescription' hinzu, damit wir sehen können, mit was wir arbeiten. – Oletha

Antwort

0

Sie also möchten Sie eine Zelle des TableView finden und dann tippen Sie darauf.

Diese Lösung nach dem Test in Xcode 9.0 Beta 6, Swift 4 mit gebucht wird

Wie in einem Kommentar von Oletha erwähnt, ist es eine gute Idee, durch den Druck das debugdescription der Hierarchie Ihrer Ansicht zu verstehen:

let app = XCUIApplication() 

    override func setUp() { 
     super.setUp() 
     continueAfterFailure = false 
     app.launch() 
     print(app.debugDescription) 
    } 

Die print-Anweisung gibt Ihnen eine detaillierte Liste der Ansichten und ihrer Hierarchie.

Als nächstes sollten Sie eine accessibilityIdentifier zu Ihrem Tableview und Zelle wie folgt hinzufügen:

a) In Ihrem viewDidLoad() oder jede andere relevante Funktion des Controller-

myTableView.accessibilityIdentifier = “myUniqueTableViewIdentifier” 

b) Innerhalb Ihrer tableView (_ tableView: UITableView, cellForRowAt indexPath: IndexPath) Funktion-

cell.accessibilityIdentifier = "myCell_\(indexPath.row)" 

Ist das erledigt, können Sie den folgenden Code in Ihrem Testfall schreiben, um die gewünschten Ergebnisse zu erhalten:

let myTable = app.tables.matching(identifier: "myUniqueTableViewIdentifier") 
    let cell = myTable.cells.element(matching: .cell, identifier: "myCell_0") 
    cell.tap() 

Hinweis, dass dies einfach helfen Ihnen, die gewünschte Zelle zu finden und tippen, können Sie einige XCTAssert Prüfungen hinzufügen in Ihrem Testfall, um es nützlicher zu machen.

S.S .: Es gibt viele Anleitungen online, die Ihnen helfen können, die UI-Tests mit Xcode zu erlernen. Beispiel: https://blog.metova.com/guide-xcode-ui-test/

Verwandte Themen