2017-06-30 3 views
0

J'écris des tests d'interface utilisateur pour mon application codée Objective-C presque finie en tant que débutant aux tests d'interface utilisateur.iOS - Tests d'interface utilisateur Recherche d'une image dans TableViewCell

J'ai un UITableView avec des cellules personnalisées. Une cellule a une vue de texte ou une vue d'image ou de progression. L'image ou la vue d'avancement est définie dynamiquement. Pour mes tests, je dois vérifier si l'image a été définie ou non. J'ai essayé d'utiliser la propriété accessibilityIdentifier. Je l'ai mis dans la méthode d'initialisation de cette cellule:

self.thumbnailImageView.isAccessibilityElement = YES; 
self.thumbnailImageView.accessibilityIdentifier = @"imageLabel" 

Dans mes tests, je reçois la cellule et a essayé de l'obtenir est des éléments en fonction identifiant comme:

XCUIElementQuery *tablesQuery = app.tables; 
XCUIElementQuery *cellsQuery = app.tables.cells; 
XCUIElement *lastCell = [[tablesQuery childrenMatchingType:XCUIElementTypeCell] elementBoundByIndex:(cellsQuery.count - 1)]; 
XCUIElement *image = lastCell.otherElements[@"imageLabel"]; 

Je n'ai pas image provenant d'app.otherElements car plusieurs cellules sont créées et beaucoup d'entre elles peuvent avoir une vue d'image. Je veux vérifier la dernière cellule et c'est l'image. Après cela, je mis une exciper: (?)

XCTAssertTrue(image.exists, @"Image cell has failed"); 

C'est jamais passer ce test et pénètre également dans un point d'arrêt d'exception. Je vérifie la situation de l'image, ce n'est pas nul.

Je ne sais pas quoi faire exactement. Pour Objective-C, il n'y a presque aucun document pour tester l'interface utilisateur. Les documents encore Swift seraient bien mais ils ne suffisent pas trop.

Toute aide serait très bonne. Je vous remercie!

+0

Vous pouvez obtenir de la documentation pour les API Objective-C en basculant la langue dans la barre de menus d'Apple Docs. Voici la brève explication fournie par Apple pour les tests d'interface utilisateur: https://developer.apple.com/documentation/xctest/user_interface_tests?language=objc – Oletha

+0

Merci, je connais ce service mais ce n'est pas suffisant. – anyName

Répondre

0

UI Le test s'exécute uniquement pour les cellules visibles, votre dernière cellule n'est pas chargée même lorsque le scénario de test est exécuté. Donc, faites défiler le contenu tableView par programmation, une fois que vous atteignez la fin du contenu de tableview (ici encore, vous devez mettre en attente que vous avez fait défiler vers la fin du contenu tableview ou non). Après cela, votre test d'interface utilisateur passera.

+0

Mais si j'utilise le même objet lastCell et vérifie s'il contient du texte, cela fonctionne très bien. Ensuite, il doit être inséré lorsque j'exécute une assertion. – anyName

+0

Cette fois, vous avez une dernière cellule, car vous avez fait défiler le contenu. –

+0

Tout va pareil. Quelle est la différence? – anyName