Reputation: 6133
I just started studying for UI testing in iOS. When I press record and tap on first index of the table, it generate codes like this.
XCUIApplication *app = [[XCUIApplication alloc] init];
[app.tables.staticTexts[@"Apr 04 16:28"] tap];
It is good if all my data are constant. But those text will be changed from time to time. How can I modify these code so that it will always tap on the first index of the table?
Upvotes: 6
Views: 8266
Reputation: 5400
Swift
If you're doing UI Testing, this will be helpful:
let cellCount = app.tables.cells.count
XCTAssertTrue(cellCount > 0)
let firstCell = app.tables.cells.element(boundBy: 0)
XCTAssertTrue(firstCell.exists)
firstCell.tap()
To answer your question though, you only need these 2 lines:
let firstCell = app.tables.cells.element(boundBy: 0)
firstCell.tap()
Upvotes: 5
Reputation: 573
Swift 4
@Joe Masilotti's solution didn't work for me. So I used:
let app = XCUIApplication()
app.tables["table's accessibilityIdentifier"].cells.allElementsBoundByIndex.first?.tap()
"table's accessibilityIdentifier" should be replaced by your table's accessibilityIdentifier.
Possibly this will save a few minutes for someone.
Upvotes: 1
Reputation: 17008
Use -elementBoundByIndex
on your app's cells
.
XCUIApplication *app = [[XCUIApplication alloc] init];
[[app.cells elementBoundByIndex: 0] tap];
Upvotes: 25