2013-12-02 4 views
4

Я недавно начал изучать uiautomator для тестирования пользовательских интерфейсов различных устройств Android. В настоящее время я тестирую Galaxy S4.Как автоматизировать шаблон разблокировки на реальном телефоне с помощью uiautomator?

Я ищу любой класс или метод, который можно использовать для автоматизации шаблона разблокировки, который пользователь рисует, чтобы разблокировать телефон. Например, у меня есть буква N в качестве «рисунка рисунка», чтобы разблокировать телефон. Как я могу автоматизировать этот шаблон разблокировки в uiautomator?

+0

Разблокирует часть вашего теста? Если его нет, будет проще просто разблокировать его, а затем запустить тест. –

ответ

2

This - единственный способ, которым я это знаю, но это утомительно, пытаясь найти ваши координаты x и y.

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

Единственный probelm я вижу это сделать «N», то вам потребуется 3 из этих swipe годов. Чтобы разблокировать его, он должен быть одним сплошным проводом.

Дайте ему представление. Поиск ваших x и y будет жестким. Я бы зашел на мою страницу «apps home» и посмотрел на приложения (с uiautomatorviewer), которые находятся в относительно одном и том же месте, найдите их координаты, затем оттуда.

УКАЗАНИЕint steps как быстро и «плавно» вы хотите провести. Мне нравится использовать 5 или 10. Это кажется довольно естественным.

+0

Благодарим за предложение. Однако инструмент uiautomatorviwer не обеспечивает точные координаты для точек. Инструмент просто предоставляет детали всего блока управления, содержащего 9 точек. Я искал любой встроенный метод, который просто создавал бы шаблон, если бы пользователь предоставил начальную и конечную точки. –

+0

Вот почему я говорю, что это будет утомительно, пытаясь найти ваши коорды. Поэтому откройте свой uiviewer, перейдите на страницу своих приложений и посмотрите на приложения, которые близки к той же позиции, что и ваши «точки», и извлекают из них границы. И работа от этого. Для разблокировки шаблонов не существует встроенного метода. Это было бы единственным способом с uiautomator –

1

Чтобы узнать координаты экрана, вы можете следить за этим:

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

После этого, если вы касаетесь в любом месте на экране -> вы можете просмотреть точные координаты экрана этой точки на вершине экрана на вашем устройстве.

И после того, как вы получите координаты, вы можете использовать метод салфетки сказать, как это -

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

метод легко дает точные координаты, где перетаскивать от и до какой точки.

Я уже использовал это, и он работает!

+1

копия с: http://www.coderexception.com/CHbzHuuNPWXPWUJS/how-to-automate-unlock-pattern-on-a-real-phone-using-uiautomator –

4

Предположим, что у вас есть буква «N» в качестве шаблона разблокировки, тогда сначала вы найдете координаты каждой точки этой формы N на вашем устройстве. Как вы уже упоминали, вся блокировка шаблона будет иметь 9 точек, вам нужно получить (x, y) координаты из 4 точек. Чтобы получить координаты, вы можете использовать метод , упомянутый ранее в одном из ответов.

  1. Перейдите в раздел «Настройки» -> «Параметры разработчика».
  2. В разделе «INPUT» -> вы найдете опцию «Pointer Location» -> включить эту опцию.

После того, как вы получите координаты ваших 4 точки, используйте салфетки (Point [] сегменты, внутр segmentSteps) метод UiAutomator Framework.

Вход для этого метода - это 4 набора координат, которые вы получили на экране вашего устройства в виде массива точек. Это приведет к непрерывному прокручиванию очков.

Я дал образец сценария ниже для вашего понимания.

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

Над сценарием будет нарисовать N-форму плавно. Помните ввод координат в соответствии с экраном вашего устройства.

+1

Это отличный ответ. Это также помогло мне рисовать форму с помощью uiautomator – gorbysbm