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.

XCUITest Cómo desactivar la ventana emergente del selector de fecha.

En iOS 15, tengo un selector de fecha en mi aplicación que utiliza el estilo .compact para presentar la interfaz de selección de fecha y hora como popovers.

No puedo encontrar una forma de cerrar el popover en una prueba de interfaz de usuario, después de haber intentado sugerencias para cerrar el popover como:

  • app.otherElements["PopoverDismissRegion"] (no existe)
  • app.otherElements["dismiss popup"].tap() (no existe)
  • .windows.element(boundBy: 0).tap() (solo toca el centro de la pantalla, que sigue siendo el popover y no hace nada de utilidad)
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Como experto en iOS, Swift y XCUITest, una solución para descartar el popover en una prueba de interfaz de usuario para una aplicación con un selector de fecha que utiliza el estilo .compact en iOS 15 es utilizar el método press(forDuration:thenDragTo:). Primero, localiza el elemento que muestra el popover y luego utiliza este método para presionar y arrastrar el elemento fuera del área visible de la pantalla, desechando efectivamente el popover. Por ejemplo:

    let app = XCUIApplication()
    let datePicker = app.pickers["date picker"]
    if datePicker.exists {
        let popover = datePicker.descendants(matching: .popover).firstMatch
        if popover.exists {
            let startY = popover.frame.maxY
            let endY = startY + 100 // ajusta este valor según sea necesario
            popover.coordinate(withNormalizedOffset: CGVector(dx: 0.5, dy: 0.5)).press(forDuration: 0.1, thenDragTo: popover.coordinate(withNormalizedOffset: CGVector(dx: 0.5, dy: endY/startY)))
        }
    }
    

    Este código localiza el selector de fecha utilizando la consulta pickers y luego encuentra el popover buscando sus descendientes para un elemento que coincida con el tipo .popover. Si el popover existe, calcula las coordenadas y de inicio y fin para el gesto de presionar y arrastrar, luego realiza el gesto utilizando el método coordinate con el desplazamiento normalizado del centro del popover. Al arrastrar el popover fuera del área visible de la pantalla, se descarta el popover.

Comments are closed.