Cómo automatizar el patrón de desbloqueo en un teléfono real utilizando uiautomator?

Recientemente he empezado a aprender uiautomator para la prueba de interfaz de usuario de varios dispositivos Android. Actualmente estoy probando en el Galaxy S4.

Estoy buscando cualquier clase o método que se puede utilizar para automatizar el patrón de desbloqueo que el usuario dibuja para desbloquear el teléfono. Por ejemplo, tengo la letra N como un "patrón de dibujo" para desbloquear el teléfono. ¿Cómo puedo automatizar este patrón de desbloqueo en uiautomator ?

Suponga que tiene la letra "N" como patrón de desbloqueo, entonces primero debe encontrar las coordenadas de cada punto de esa forma N en su dispositivo. Como usted mencionó, la cerradura entera del patrón tendrá 9 puntos, usted tiene que conseguir (x, y) coordenadas de 4 puntos. Para obtener las coordenadas, puede utilizar el mismo método mencionado anteriormente en una de las respuestas.

  1. Vaya a "Configuración" -> "Opciones del desarrollador".
  2. En la sección 'INPUT' -> encontrará una opción 'Pointer Location' -> habilitar esa opción.

Una vez que obtenga sus coordenadas de 4 puntos, use el método swipe (Point [], int segmentSteps) de UiAutomator Framework.

La entrada para este método es el conjunto de 4 de coordenadas que obtuvo de la pantalla del dispositivo como matriz de puntos. Esto le dará un deslizamiento continuo a través de los puntos.

He dado un script de ejemplo a continuación para su comprensión.

 import android.graphics.Point; public void unlockpatternlock() throws UiObjectNotFoundException, Exception { Point[] cordinates = new Point[4]; cordinates[0] = new Point(248,1520); cordinates[1] = new Point(248,929); cordinates[2] = new Point(796,1520); cordinates[3] = new Point(796,929); getUiDevice().wakeUp(); getUiDevice().swipe(cordinates, 10); } 

Encima de la escritura dibujaría la forma de N suavemente. Recuerde introducir las coordenadas de acuerdo con la pantalla del dispositivo.

Esta es la única manera que sé de hacerlo, pero puede ser tedioso tratar de encontrar sus coordenadas xey.

 UiDevice.getInstance().swipe(int startX, int startY, int endX, int endY, int steps) 

El único probelm que veo es hacer un "N", usted necesitaría 3 de estos swipe . Para desbloquear, tiene que ser un golpe continuo.

Dale un espectáculo. Encontrar su xyy será difícil. Yo iría a mi página de "apps home" y vería las aplicaciones (con el uiautomatorviewer ) que están en relativamente el mismo lugar, encuentran sus coords, luego van desde allí.

NOTA Los int steps son lo rápido y "suave" que desea pasar. Me gusta usar 5 o 10. Parece bastante natural.

Para averiguar las coordenadas de la pantalla, puede seguir esto:

 [1] Go to 'Settings' -> 'Developer Options'. [2] Under 'INPUT' section -> you will find a option 'Pointer Location' -> enable that option. 

Después de eso, si toca en cualquier parte de la pantalla, puede ver las coordenadas exactas de la pantalla de ese punto en la parte superior de la pantalla en su dispositivo.

Y después de que usted consiga las coordenadas, usted puede utilizar el método del golpe diga como esto –

 UiDevice.getInstance().swipe(390, 1138, 719, 1128, 40); 

Método que da fácilmente las coordenadas exactas donde arrastrar desde y hasta qué punto.

Ya he utilizado esto y funciona!

  • Android UiAutomatorViewer no puede detectar algunas vistas
  • UIAutomator haga clic en la vista de lista basada en el índice
  • Android UIAutomator haga clic en el dispositivo
  • Proporcionando retraso entre eventos en UiAutomator Android
  • UIautomator cómo obtener el hijo por índice o instancia
  • Seleccione el elemento de AutoCompleteTextView en uiautomator
  • Android uiautomator para hacer clic en ListView
  • Android - Fragmento independiente herramienta de prueba de interfaz de usuario
  • UI Automator en proyecto con minSdkVersion 9
  • Error en el código UIAuitomator
  • UiAutomator falla en el dispositivo 4.1.2
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.