Khant Thu Linn
Khant Thu Linn

Reputation: 6133

iOS UI Testing tap on first index of the table

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

Answers (3)

kakubei
kakubei

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

phantom_2
phantom_2

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

Joe Masilotti
Joe Masilotti

Reputation: 17008

Use -elementBoundByIndex on your app's cells.

XCUIApplication *app = [[XCUIApplication alloc] init];
[[app.cells elementBoundByIndex: 0] tap];

Upvotes: 25

Related Questions