Ausgabe
Nehmen wir an, ich habe eine App mit einer Benutzeroberfläche, die ungefähr so aussieht wie das Bild unten:
Nehmen wir auch an, dass sich die blaue Ansicht wie eine Karte verhält und die anderen Farben andere interaktive Ansichten sind.
Ich muss einen XCTest durchführen, bei dem ich diese blaue Ansicht “herauszoomen” muss, die ich mit pinchWithScale müde gemacht habe :
[blueView pinchWithScale:0.5 velocity:-1];
Leider funktioniert das nicht, weil eine der roten Ansichten oder die violette Ansicht (die die blaue Ansicht aus Schatten- und Eckengründen ein wenig überlappt) anstelle einer pinch
Geste auf der blauen Ansicht ausgelöst wird.
Ich habe gesehen, dass ich mit der Methode ” coordinateWithNormalizedOffset ” (ähnlich wie hier ) einer Ansicht abrufen kann:
- (XCUICoordinate *)coordinateWithNormalizedOffset:(CGVector)normalizedOffset;
wodurch ich nicht die gesamte blaue Ansicht verwenden könnte, um eine “Verkleinern” -Geste auszuführen, indem ich:
XCUICoordinate* blueViewInset = [blueView coordinateWithNormalizedOffset:
CGVectorMake(0.2f, 0.2f)];
aber das XCUICoordinate- Objekt blueViewInset
unterstützt keine Pinch-Gesten.
Wie kann ich also eine Pinch-Geste ausführen, um ein XCUIElement mit Koordinaten nicht am Rand der Ansicht zu “verkleinern”?
Ich frage mich auch, ob es eine Möglichkeit gibt, eine Erweiterung für XCUIElement mit einer benutzerdefinierten Pinch – Geste zu erstellen. Über Hinweise dazu würde ich mich auch freuen.
Lösung
Ich habe herausgefunden, dass ich eine weitere leere Ansicht über meiner hinzufügen kann (aber nicht möchte) mit Einschränkungen auf die Hälfte der Größe (siehe gelbliches Rechteck in der Abbildung unten). Dies funktioniert bisher für alle meine Fälle, da keine andere Ansicht so weit überlappt. Es sieht in etwa so aus:blueView
Das Ausführen von a pinchWithScale
in dieser leeren Ansicht funktioniert und zwickt tatsächlich die blueView
.
Dies ist eine sehr hässliche Lösung, da ich eine Ansicht hinzufügen muss, die ausschließlich zum Testen der Benutzeroberfläche dient.
Wenn jemand einen Hinweis hat, wie man es für den Release-Build entfernt, lass es mich wissen.
Aktualisieren
Ich habe einen Build-Schritt erstellt, der ein Skript ausführt, das diese Ansicht nur hinzufügt, wenn das Testziel für die Benutzeroberflächenautomatisierung ausgeführt wird. Nach der Ausführung wird die Quellcodeverwaltung (z. B. git reset HEAD~) verwendet, um die hinzugefügte Ansicht rückgängig zu machen.
Beantwortet von – Bruno Bieri
Antwort geprüft von – Jay B. (FixError Admin)