Error de coincidencia de evento con marca de tiempo: no se pudo encontrar el elemento coincidente

94

Estoy tratando de generar una UItest en Xcode. Cuando intento deslizar UIview, aparece un error:

Timestamped Event Matching Error: Failed to find matching element

ventana de error

ingrese la descripción de la imagen aquí

Esto también sucede si intento tocar UIView.

shay
fuente
¿Puedes explicar un poco más?
Dieter Meemken
Intento deslizar o tocar en UIview que se supone que debo hacer algo (tiene reconocimiento de gestos) pero cuando hago el gesto ocurre este error. La única forma en que logré hacerlo funcionar es con consultas, pero es realmente complicado y estoy seguro de que hay otra manera
Shay

Respuestas:

47

Debe verificar que la opción 'Accesibilidad' esté habilitada para el objeto UIView desde el que está deslizando, por ejemplo:

ingrese la descripción de la imagen aquí

AmitW
fuente
1
Activar la accesibilidad para un WebView hizo que mis pruebas fallaran al resolver texto en el WebView. Desactivar la accesibilidad para UIView que aloja WebView hizo que las pruebas tuvieran éxito. Así que ten cuidado.
askielboe
1
Como otro punto para que funcione para mí, tuve que ponerle una etiqueta
Sean Lintern
Encontré esta publicación útil para usar fastlanepara tomar capturas de pantalla de un tableView. stackoverflow.com/a/39331154/4475605
Adrian
¿Donde está esto? ¿Cómo configuro esto?
Cory McAboy
@CoryMcAboy puede configurarlo desde el código para su vista personalizada:isAccessibilityElement = true
Gleb Tarasov
14

Por lo general, este problema se observa cuando el elemento principal del elemento que desea registrar se establece en isAccessibilityElement = true. En general, debe tener el elemento principal establecido en falso para acceder al elemento secundario. Por ejemplo: si tiene un UILabel dentro de una vista, la accesibilidad debe establecerse en false para la vista y en true para UILabel.

Souma Paul
fuente
1
Esto era exactamente reproducible. Como dijiste, no funciona si el elemento principal está configurado en isAccessibilityElement = true. Después de cambiarlo a falso, funcionó de nuevo.
pommes
3

En Xcode 9.3, donde aparentemente esto sigue siendo un problema, lo que hice fue:

  • Salir de Xcode
  • Restablecer la configuración del Simulador (Hardware -> Borrar todo el contenido y la configuración)
  • Salir del simulador
  • Eliminar los datos derivados de la aplicación actual
  • Reiniciar Xcode
  • Intente grabar de nuevo, esta vez funcionó para mí.
comanda
fuente
He proporcionado el identificador como "skipButton" para un botón y, al identificar el botón, siempre falla. Estoy identificando el botón como app.buttons ["skipButton '], agradezco su ayuda
Sujit Baranwal
Estos pasos no funcionaron para mí. De hecho, los widgets que no se vieron afectados anteriormente por el problema se vieron afectados.
Geoff S
¿Por qué esto no tiene contenido?
cuervo
2

Para grabar una nueva prueba, no creo que haya una solución todavía. Pero, si usa una extensión forzando el toque con una prueba que ya existe, funciona.

Ejemplo de uso:

extension XCUIElement {

    func forceTapElement() {
        if self.hittable {
            self.tap()
        }
        else {
            let coordinate: XCUICoordinate = self.coordinateWithNormalizedOffset(CGVectorMake(0.0, 0.0))
            coordinate.tap()
        }  
    }
}

func testSomethingWithCells() {

   let app = XCUIApplication()
   let cells = app.tables.cells
   sleep(1)
   cells.elementBoundByIndex(0).forceTapElement()
}

Puedes consultar la publicación original aquí:

Prueba de interfaz de usuario de Xcode - Error de prueba de interfaz de usuario - No se pudo desplazar a visible (por acción de AX) cuando se toca el botón "Cancelar" del campo de búsqueda

Sophy Swicz
fuente
elementBoundByIndex 'ha sido renombrado a' element (boundBy :) ', por ejemplo: cells.element (boundBy: 0) .tap ()
Sujananth
2

Ocasionalmente me he encontrado con este problema. Eliminar el directorio de la aplicación de DerivedData parece ayudar.

Dave L
fuente
1

Una solución que funcionó para mí fue identificar el objeto de manera diferente.
En Xcode 8 pude usar lo siguiente:

XCUIApplication().tables.cells["Camera Roll"].buttons["Camera Roll"].tap()

Con Xcode 9 obtuve el error mencionado en esta pregunta. Terminé usando lo siguiente, que funcionó (aunque más escamoso que la opción original)

XCUIApplication().cells.element(boundBy: 1).tap()
Charlie Seligman
fuente
@ Desarrollador en su función de prueba
Huy-Anh Hoang