Search code examples
iosobjective-cxcodeuicollectionviewxcode-ui-testing

UItesting : Click on UIcollectionview then testing it get failed


I am new at ui-testing. During recording, when I tap on ui-collection view first object is shown on UI and corresponding to code written in test-example method is:

XCUIElement *window = [[app childrenMatchingType:XCUIElementTypeWindow] elementBoundByIndex:0];
    XCUIElement *element2 = [[[[window childrenMatchingType:XCUIElementTypeOther].element childrenMatchingType:XCUIElementTypeOther].element childrenMatchingType:XCUIElementTypeOther].element childrenMatchingType:XCUIElementTypeOther].element;
    [element2 tap]; 

And when automating the test-example method, it's unable to fetch first object of ui-collection view. please suggest a way to do that. Thanks in advance.


Solution

  • Recording UITests tends to give you really long and ugly queries. I strongly suggest that you have a look on how to write UITests manually. It's really easy and the queries look much better.

    For example: to tap on the first cell of your collection view all you need to do is this (providing that there is only one UICollectionView on the current screen):

    Objective-C

    - (void)testExample {
        XCUIApplication *app = [[XCUIApplication alloc] init];
        [app launch];
    
        [[app.collectionViews.cells elementBoundByIndex:0] tap];
    }
    

    Swift

    func testExample() {
        let app = XCUIApplication()
        app.launch()
    
        // tap on the first collection view cell on the current screen
        app.collectionViews.cells.element(boundBy:0).tap()
    }