2016-06-23 8 views
0

Ich schreibe einen UI-Test in Swift gegen eine iOS-App, die eine UITableView mit einer benutzerdefinierten UITableViewCell geladen von einer Feder enthält. Die Zelle enthält eine UIImageView und eine UILabel.UITest Query für UIImage innerhalb einer UITableViewCell

Wenn die Tabelle gerendert wird, gibt es keine XCUIElementQuery, die das Bildelement findet. Wie können Sie während des UI-Tests auf ImageView zugreifen, um die Quelle des Bildes zu erfahren, das im Symbolfeld angegeben wurde?

class MyCell: UITableViewCell { 
    @IBOutlet var name: UILabel! 
    @IBOutlet var icon: UIImageView! 
} 

Das Bild erscheint nicht in app.images, app.tables.cells.images oder app.tables.cells.otherElements. Es scheint, als ob die Bildsymbole nirgends in der UI-Hierarchie zu finden sind.

+0

Ist Ihr UITableViewCell ein barrierefreies Element? Wenn dies der Fall ist, kann die UI-Hierarchie dort enden. Container sollten nicht zugänglich sein, zugängliche Elemente dürfen keine anderen zugänglichen Elemente enthalten. –

+0

Die Eingabehilfe ist für die Zelle nicht aktiviert und es ist möglich, das Etikett in der Zelle zu sehen, nur nicht das Bild. – Adam

+0

Wenn Sie barrierefreie Kennung für imageView setzen, können Sie ein Bild wie dieses finden "app.tables.cells.images [" identifier "]" und wenn Sie ein bestimmtes Zellensymbol des Indexes möchten, können Sie "app.tables.cells.elementBoundByIndex (index) .images ["identifier"] ", aber den Namen der Bilddatei in der Hierarchie können Sie nicht finden – Cruz

Antwort

0

Der Pfad des Bilds ist im UI-Test nicht verfügbar. Das Framework sieht die App wie ein Benutzer, warum sollte sich jemand für den Dateinamen eines Häkchens interessieren?

Aktualisieren: Um die Benutzerschnittstelle/Zugänglichkeit zu Ihren verschiedenen Symbolen in Beziehung zu setzen, können Sie beim Festlegen des Bildes Zugriffsbezeichner festlegen.

MyCell().icon?.accessibilityIdentifier = "check" 
+0

Der Ressourcenname des Symbols kann abhängig von den Daten in dieser Zellenzeile unterschiedlich sein – Adam

+0

Sie können die Zugriffskennung der Bildansicht ändern Siehe meine Bearbeitung. –

1

Es ist spät, aber für andere Benutzer ...

Ich löste es wie folgt:

  1. hinzufügen accessibilityIdentifier für Tisch.

self.tableView.accessibilityIdentifier = "ExampleTableView"

  1. Set Imageview isAccessibilityElement auf true !!!

cell.icon.isAccessibilityElement = true

  1. Bildname in variabel und setzen accessibilityLabel das Bild mit Variablennamen.

let imageName = "example_image"

cell.icon.accessibilityIdentifier = "ExampleTableViewCellIcon"

cell.icon.accessibilityLabel = imageName

cell.icon.image = UIImage(named: imageName)!

  1. -Test

XCTAssert(app.tables["ExampleTableView"].cells.element(boundBy: 0).images[ExampleTableViewCellIcon].label == "example_image")