P. Pawluś P. Pawluś - 4 months ago 22
Swift Question

How to pick an image at some index from UIImagePickerController under UITests in Xcode?

Currently I access photo gallery and pick up a photo the following way:

extension XCUIApplication {

func pickPhotoFromImagePickerAtIndex(index: UInt) {

tables.buttons["Moments"].tap()
collectionViews["PhotosGridView"].tapCellAtIndex(index)
}
}


Example of use:

photosCollectionView.tapCellAtIndex(0)
app.pickPhotoFromImagePickerAtIndex(5)


This method crashes sometimes. It depends on photos in gallery.

Is there any way to do this in more elegant and effective way?

Answer

I assume, that index you need to tap is counted from the bottom of the collection view. If so, then you can redesign your method:

func pickPhotoFromImagePickerAtInvertedIndex(index: UInt) {

    tables.buttons["Camera Roll"].tap()
    let collectionView = collectionViews["PhotosGridView"]
    collectionView.cells.elementBoundByIndex(collectionView.cells.count - 1 - index).tap()
}