es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo tocar por coordenadas x e y en iOS?

Para el mundo de Android, podemos tocar cualquier ubicación utilizando lo siguiente:

val device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
device.click(x, y)

Los valores de x y y anteriores se pueden obtener de Pixelmator de la siguiente manera:

enter image description here

Por ejemplo, la coordenada de la tecla "a" debería ser x=100 e y=1800 (con la regla de Pixelmator).

Según la respuesta en StackOverflow en tapCoordinate, podríamos hacer algo similar para iOS:

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()
} 

Pero no funcionó como se esperaba. Me preguntaba si tal vez podríamos tocar algunos puntos utilizando las coordenadas x e y de la pantalla global.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Como experto en IT especializado en iOS, Swift y XCTest, puedo responder a su pregunta. Sí, es posible tocar algunos puntos por medio de la x y la y de la pantalla global en iOS.

    El siguiente código puede ser utilizado para tocar un punto en la pantalla utilizando las coordenadas x y y de la pantalla global:

    let point = CGPoint(x: xCoordinate, y: yCoordinate)
    let tap = XCTNSNotificationExpectation(name: .init(rawValue: "com.apple.uikit.tapGestureRecognizer.tappedNotification"))
    XCUIApplication().coordinate(withNormalizedOffset: .zero).coordinate(with: point).tap()
    wait(for: [tap], timeout: 5)
    

    En este código, xCoordinate y yCoordinate son las coordenadas x y y del punto en la pantalla global que desea tocar. La función CGPoint se utiliza para crear un punto a partir de las coordenadas x y y, y luego se utiliza la función coordinate(withNormalizedOffset:) para obtener la coordenada de este punto relativo al sistema de coordenadas de la aplicación. Luego, se utiliza la función tap() para tocar este punto.

    Tenga en cuenta que para utilizar este código, necesita importar XCTest y tener una instancia de XCUIApplication.

    ¡Espero que esto le ayude! Déjeme saber si tiene alguna otra pregunta.

Comments are closed.