2012-01-05 11 views
6

Tengo un campo de búsqueda en mi aplicación y he configurado el tipo de clave de devolución del teclado para este campo en UIReturnKeyNext. Estoy intentando escribir una prueba UIAutomation que hace clic en el botón Siguiente en el teclado mediante la siguiente línea:Haciendo clic en la tecla 'Siguiente' del teclado usando UIAutomation

UIATarget.localTarget().frontMostApp().mainWindow().keyboard().keys().firstWithName("next"); 

Esta llamada está fallando porque la clave con el nombre 'siguiente' no está siendo encontrado. He hecho un volcado de todos los elementos en mi aplicación usando:

UIATarget.localTarget().frontMostApp().logElementTree(); 

Esto revela que hay de hecho una tecla en el teclado con el nombre de 'siguiente', pero de alguna manera mi intento de recuperarlo como demostración arriba todavía falla Sin embargo, puedo recuperar otras claves (como la clave para la letra 'u') usando este método. ¿Hay algún problema conocido aquí o estoy haciendo algo mal?

He intentado otras variaciones sin suerte:

UIATarget.localTarget().frontMostApp().mainWindow().keyboard().elements()["next"]; 

Aquí está una captura de pantalla de los elementos en mi UIAKeyboard:

return key dump

Respuesta

1

las siguientes obras para mí:

UIATarget.localTarget().frontMostApp().mainWindow().keyboard().buttons().firstWi‌​thPredicate("name contains[c] 'next'"); 
2

I dont't tienen un ejemplo para prueba, pero como el botón "Siguiente" es un UIAButton, y no una Clave UIA, puede intentar:

UIATarget.localTarget().frontMostApp().mainWindow().keyboard().buttons()["next"]; 

Si esto no funciona, también puede probar

UIATarget.localTarget().frontMostApp().mainWindow().keyboard().buttons()[4]; 
+0

Intenté ambas cosas y no tuve suerte. Gracias por las sugerencias sin embargo. – kodie

+0

Julien, su respuesta me llevó a jugar de nuevo con esto, y al usar la función de botones() condujo a una solución de trabajo. Esto es lo que funciona para mí: UIATarget.localTarget(). FrontMostApp(). MainWindow(). Teclado(). Botones(). FirstWithPredicate ("nombre contiene [c] 'siguiente'"); Me parece que los botones() ["siguiente"] deberían haber funcionado y no sé por qué no lo hizo, pero lo anterior funciona. Gracias por la sugerencia. – kodie

2

Si lo que desea es hacer clic en él, y que conoce el teclado tiene "siguiente" como "Return" (definido en su boca), entonces usted puede utilizar esto:

app.keyboard().typeString("\n"); 
0

Para mí, teclado, no entra dentro mainWindow() en la vista de Jerarquía. Está en el mismo nivel que mainWindow() cuando logElementTree() desde el nivel superior. Por lo tanto, lo que se quiere hacer es:

UIATarget.localTarget().frontMostApp().keyboard().buttons()["next"]; 

Esto funcionó para mí cuando yo estaba tratando de presionar el botón "Buscar" en el teclado.

Cuestiones relacionadas