[FIXED] XCTest – UI-Tests mit XCUIElement mit Pinch-Geste auf benutzerdefinierten Koordinaten?

Ausgabe

Nehmen wir an, ich habe eine App mit einer Benutzeroberfläche, die ungefähr so ​​aussieht wie das Bild unten:

Benutzeroberfläche zum Testen

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 pinchGeste 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 blueViewInsetunterstü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

Benutzeroberfläche mit leerer Ansicht für Pinch-Gesten

Das Ausführen von a pinchWithScalein 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)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like

[FIXED] CIImage horizontal spiegeln

Ausgabe Ich versuche, mein CIImage horizontal zu spiegeln mit: image = [image imageByApplyingTransform:CGAffineTransformMakeScale(1, -1)]; image = [image imageByApplyingTransform:CGAffineTransformMakeTranslation(0,…