verdad tapping que para hacer funcione funciona eft dinero como ios swift xcode7 xcode-ui-testing fastlane-snapshot

ios - que - tapping youtube



Cómo hacer tapping en un punto específico usando Xcode UITests (3)

@joe Para ir un poco más lejos del enfoque de Joe Masilotti, puse el mío en una extension y di frases preposicionales a los parámetros globales y locales.

func tapCoordinate(at xCoordinate: Double, and yCoordinate: Double) { let normalized = app.coordinate(withNormalizedOffset: CGVector(dx: 0, dy: 0)) let coordinate = normalized.withOffset(CGVector(dx: xCoordinate, dy: yCoordinate)) coordinate.tap() }

Al dar al nombre global un nombre identificable, puedo entender fácilmente la instancia, por ejemplo:

tapCoordinate(at x: 100, and y: 200)

Quiero usar las pruebas de Xcode UI con Fastlane Snapshot para hacer capturas de pantalla de la aplicación Cordova. Básicamente, como toda mi aplicación es solo una vista web, todos los métodos de ayuda de prueba de Ucode de Xcode se vuelven irrelevantes, y solo quiero hacer tapping en puntos específicos, por ejemplo, tap(x: 10, y: 10) debería producir un toque en el punto {10px; 10px} {10px; 10px} .

Probablemente sea muy simple, pero no puedo averiguar cómo hacerlo.

Gracias.


Puede tocar un punto específico con la API XCUICoordinate . Desafortunadamente, no puedes simplemente decir "toque 10,10" haciendo referencia a una coordenada de píxeles. Deberá crear la coordenada con un desplazamiento relativo a una vista real.

Podemos usar la vista web mencionada para interactuar con la coordenada relativa.

let app = XCUIApplication() let webView = app.webViews.element let coordinate = webView.coordinateWithNormalizedOffset(CGVector(dx: 10, dy: 10)) coordinate.tap()

Nota al margen, pero ¿has intentado interactuar con la vista web directamente? He tenido mucho éxito al usar app.links["Link title"].tap() o app.staticTexts["A different link title"].tap() . Aquí hay una aplicación de demostración que armé para demostrar que interactuamos con una vista web.

Actualización : como señaló Michal W. en los comentarios, ahora puede tocar una coordenada directamente , sin preocuparse por normalizar el desplazamiento.

let normalized = webView.coordinateWithNormalizedOffset(CGVector(dx: 0, dy: 0)) let coordinate = normalized.coordinateWithOffset(CGVector(dx: 10, dy: 10)) coordinate.tap()

Observe que paso 0,0 al vector normalizado y luego el punto real, 10,10, a la segunda llamada.


<something>.coordinate(withNormalizedOffset: CGVector.zero).withOffset(CGVector(dx:10,dy:60)).tap()

Pase .zero al vector normalizado y luego el punto real (10,60)