Android九宫格滑动解锁初探

最近在做APP的自动化测试,采用的是Appium方案。在测试过程中遇到了九宫格滑动解锁的问题,通过查阅相关资料,我做了一个通用的方法来处理九宫格在一个view中显示的情况。

这种情况我们只能通过定位每一个点的相对坐标来滑动,这里先获取整个九宫格所在view的位置,获取该view左上角的坐标,接下来我们需要得到两个点之间横向和纵向的距离,就能方便的计算出每个点的坐标了。

这里使用TouchAction类来进行点击滑动等操作。

/** * 任意点数滑动解锁 * @param driver * @param points */ public static void slipeToUnlock(AppiumDriver driver, int[][] points){ // 定义一个list来保存计算后的两个相邻点之间的偏移量 List<PointOption> l = new ArrayList<>(); l.add(PointOption.point(points[0][0],points[0][1])); int n = points.length; if (n != 0){ for (int i = 0; i < n1; i++){ int x = points[i+1][0] points[i][0]; int y = points[i+1][1] points[i][1]; PointOption p1 = PointOption.point(x, y); l.add(p1); } } AndroidTouchAction s = new AndroidTouchAction(driver); s.press(l.get(0)); for (int i = 0; i < n1; i++){ s.waitAction().moveTo(l.get(i+1)); } s.release().perform(); }

在这个方法中需要注意的是传入的第二个参数是一个二维数组,该二维数组中包含滑动解锁需要经过的所有点的坐标,通过查阅相关资料发现,从前一个点滑到后一个点并不是简单的坐标变换,后一个点的位置是相对于前一个点位置的偏移量,该方法会自动计算出相邻两个点之间的偏移量。然后通过调用该方法就能实现任意点数的滑动解锁。

// 部分代码 int[] p1_1 = {x + offset, y + offset}; int[] p1_2 = {x + offset*2, y + offset}; int[] p1_3 = {x + offset*3, y + offset}; int[] p2_2 = {x + offset*2, y + offset*2}; int[] p3_2 = {x + offset*2, y + offset*3}; // 滑动解锁所经过的点 int[][] points = {p1_1, p1_2, p2_2, p3_2}; // 调用滑动解锁方法 slipeToUnlock(driver, points);

刚开始研究,欢迎提供更优质的方法。

© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片