2016-05-06 19 views
2

Ich versuche, einen x, y-Speicherort zu tippen, während Xcode und UI-Test verwendet. Hier ist mein Code:Xcodes-UI-Test - Tippen auf einen xy-Speicherort

XCUIApplication().coordinateWithNormalizedOffset(CGVector(dx: 50, dy: 50)).tap() 

Die Mitte der Taste ist auf jeden Fall an dieser Stelle und kann nicht als einzelnes Objekt identifiziert werden (daher die x mit, y-Koordinaten).

Dies ist jedoch nicht die Taste drücken. Wer weiß, ob es eine korrekte Art gibt, auf eine x y Koordinate zu tippen?

Antwort

4

Die dx und dy sind keine Pixeloffsets, sondern normalisierte Vektoren. Zum Beispiel ist 0,5 eigentlich die Mitte des Elements. Ihr Code versucht, auf ein Element außerhalb der Grenzen des Bildschirms zu tippen (um ~ 50x!).

Ich schlage vor zu versuchen, das Problem mit einem anderen Ansatz zu lösen. Zunächst einmal, warum kann der Knopf nicht identifiziert werden? Was hast du probiert? Verwenden Sie eine benutzerdefinierte UIButton Unterklasse?

Ich frage, weil Sie in der Regel Steuerelement oder UI-Element zu UI-Tests mit den richtigen Zugänglichkeitsattributen verfügbar machen können. Beispielsweise können Sie accessibilityLabel und accessibilityIdentifier auf den Text der Schaltfläche festlegen. Dann können Sie diesen Wert verwenden, um auf die zu testende Schaltfläche zuzugreifen.

// Production Code 
let button = UIButton() 
button.setTitle("Save", forState: .Normal) 
button.accessibilityIdentifier = "Save" 

// UI Test Code 
``` 
let app = XCUIApplication() 
app.buttons["Save"].tap() 
+0

Joe - danke für die heads up re 50x! Hoppla. Wir haben Accessibility-Labels, IDs und Hinweise ausprobiert, aber diese Seite erweist sich aus einem unbekannten Grund als scheußlich. Entwickler debuggen immer noch warum, aber ich sagte, dass ich in der Zwischenzeit einen x, y-Ansatz versuchen würde. Werde versuchen, einige 0.x Werte - danke! –