我最近开始学习uiautomator
各种 Android 设备的 UI 测试。目前我正在 Galaxy S4 上进行测试。
我正在寻找任何可用于自动化用户为解锁手机而绘制的解锁模式的类或方法。例如,我将字母N
作为“绘制图案”来解锁手机。我怎样才能自动化这个解锁模式uiautomator
?
我最近开始学习uiautomator
各种 Android 设备的 UI 测试。目前我正在 Galaxy S4 上进行测试。
我正在寻找任何可用于自动化用户为解锁手机而绘制的解锁模式的类或方法。例如,我将字母N
作为“绘制图案”来解锁手机。我怎样才能自动化这个解锁模式uiautomator
?
假设您有字母“N”作为解锁图案,那么首先您在设备中找到该 N 形状的每个点的坐标。正如您所提到的,整个图案锁将有 9 个点,您必须获得 4 个点的 (x,y) 坐标。要获取坐标,您可以使用前面在其中一个答案中提到的相同方法。
获得 4 个点的坐标后,使用UiAutomator Framework 的swipe(Point[] segments, int segmentSteps)方法。
此方法的输入是您从设备屏幕获得的 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 形。请记住根据您的设备屏幕输入坐标。
这是我知道的唯一方法,但尝试找到您的 x 和 y 坐标可能会很乏味。
UiDevice.getInstance().swipe(int startX, int startY, int endX, int endY, int steps)
我看到的唯一问题是做一个“N”,你需要其中swipe
的 3 个。要解锁,需要连续滑动一次。
给它一个展示。找到你的 x 和 y 会很困难。我会转到我的“应用程序主页”页面并查看位于uiautomatorviewer
相对相同位置的应用程序(带有 ),找到它们的坐标,然后从那里开始。
注意这int steps
是您想要滑动的速度和“流畅度”。我喜欢用 5 或 10。看起来很自然。
要找出屏幕的坐标,您可以按照以下步骤操作:
[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);
方法很容易给出确切的坐标从哪里拖动到什么点。
我已经使用过它并且它有效!
TouchAction obj = new TouchAction(driver); obj.press(PointOption.point(551,1238)).moveTo(PointOption.point(545, 1019)).release().perform();
使用此方法滑动,它适用于模式 (5,2)