2015-09-14 4 views
15

Ich bin mit einem Problem konfrontiert mit Framework für die xCode, die Apple auf der WWDC 2015 eingeführt hat. Ich habe eine UITableView und diese Tabelle enthält eine Menge Zellen. Ich habe auch eine NSArray mit Zellen Titel - wenn Zelle Titel in NSArray enthalten ist, sollte diese Zelle angezapft werden. Mein Problem ist, dass ich Tabellenansicht für bestimmte Zelle nicht scrollen kann, da Framework keine Methode zum Arbeiten mit Tabellenansichten enthält, nur Gesten wischen (nach unten, oben).xCode 7, UI-Testing: Arbeiten mit UITableView

Vielleicht weiß jemand, wie ich auf bestimmte Zelle in der Tabellenansicht tippen kann? Oder wie kann ich Tabellenansicht für bestimmte Zelle blättern? Denn wenn ich tap() Methode für Zelle aufrufen, die auf dem Bildschirm nicht sichtbar sind - nichts passieren.

Vielen Dank im Voraus!

+1

Wenn meine Antwort Ihr Problem gelöst hat, können Sie bitte akzeptieren, danke –

Antwort

13

Das ist für mich gearbeitet:

XCUIElementQuery *tablesQuery = self.app.tables; 

XCUIElementQuery *cellQuery = [tablesQuery.cells containingType:XCUIElementTypeStaticText 
                identifier:@"Work"]; 

XCUIElementQuery* cell = [cellQuery childrenMatchingType:XCUIElementTypeStaticText]; 

XCUIElement* cellElement = cell.element; 

[cellElement tap]; 

Für den Tischgebrauch Scrollen:

XCUIElementQuery *tablesQuery = self.app.tables; 
XCUIElement* table = tablesQuery.element; 
[table swipeUp]; 
+0

eine Idee, wie dies mit Swift erreichen? – cptdanko

+1

@cptdanko Siehe meine Antwort für Swift Äquivalent. – Santosh

4

Ich bin kürzlich auf ein ähnliches Problem gestoßen. Eine Option, die Sie versuchen können, ist für einen bestimmten Titel für eine Zelle in der Tabelle zu suchen, und tippen Sie auf, dass

zum Beispiel: -

XCUIApplication().tables.staticTexts["identifier"].tap() 

oder

XCUIApplication().tables.cells.staticTexts["identifier"].tap() 

Wo? " Bezeichner "ist der Titel der Zelle, die Sie tippen möchten.

Ich hoffe, das hilft!

+4

Danke für die Antwort, aber es funktioniert nicht, nichts passiert nach dem Tippen():/ –

4

Swift-Version für @Eugene Zhenya Gordin Antwort: für Swift 4

let tablesQuery = app.tables 
    let cellQuery = tablesQuery.cells.containing(.staticText, identifier: "MyCell") 
    let cell = cellQuery.children(matching: .staticText) 
    let cellElement = cell.element 
    cellElement.tap() 

    let tableElement = tablesQuery.element 
    tableElement.swipeUp() 
Aktualisiert
+0

diese werden nicht kompiliert in Swift 4 – delta2flat

+0

@ delta2flat versuchen Sie es jetzt – Santosh

1

Ich hatte das gleiche genaue Problem!

Zuerst habe ich nur auf das Etikett der Zelle geklopft, durch die Abfrage .staticTexts. Hier ist ein anderer Weg, der für mich funktionierte:

In cellForRowAtIndexPath, wo Sie die Zellen instanziieren, geben Sie ihnen jeweils eine eindeutige Kennung, abhängig von ihrer titleLabel oder einer anderen Eigenschaft.

Beispiel:

cell.accessibilityIdentifier = [NSString stringWithFormat:@"myCellType%@", cell.colorIdentifier]; 

Dann zurück in der Testklasse, versuchen Sie dies: (Ein wenig ausführliche absichtlich, weil es mir besser geholfen zu verstehen)

XCUIApplication *application = [XCUIApplication new]; 
XCUIElementQuery *tablesQuery = application.tables; 
XCUIElementQuery *allCellsQuery = tablesQuery.cells; 
XCUIElementQuery *specificCellQuery = [cellQuery matchingIdentifier:@"myCellTypeSaffron"]; 
XCUIElement *cell = specificCellQuery.element; 

[cell tap]; 

Die spezifische Zelle löst, wenn es ist interagiert mit.

Hoffe, dass hilft!