Android自动化测试在多种屏幕下的注意事项
作者:网络转载 发布时间:[ 2012/10/26 10:19:07 ] 推荐标签:
由于所有的坐标位置都是以像素计算的,没有考虑到缩放的情形,所以在不同密度的屏幕上会发生点击错位的情况。
为了修复这个问题,解决方案是获取当前屏幕的密度和对dpi计算大小的控件的缩放比例,然后恢复原始的比例再发送点击消息:
1: // 需要传递要点击的控件View的实例
2: public void clickOnScreen(View view, boolean longClick, int time) {
3: if(view == null)
4: Assert.assertTrue("View is null and can therefore not be clicked!", false);
5: int[] xy = new int[2];
6:
7: // 获取控件在屏幕上的位置 – 如果是dpi计算大小的控件,这个位置是缩放后的位置
8: view.getLocationOnScreen(xy);
9:
10: // 获取控件的大小,并且计算出点击的控件中点位置
11: final int top = view.getTop();
12: final int viewWidth = view.getWidth();
13: final int viewHeight = view.getHeight();
14: float x = xy[0] + (viewWidth / 2.0f);
15: float y = xy[1] + (viewHeight / 2.0f);
16:
17: // 计算缩放比例,将要点击的x, y坐标恢复到缩放前的情况。
18: Activity activity = activityUtils.getCurrentActivity();
19: DisplayMetrics rdm = activity.getResources().getDisplayMetrics();
20: DisplayMetrics wdm = new DisplayMetrics();
21: activity.getWindowManager().getDefaultDisplay().getMetrics(wdm);
22: x *= wdm.scaledDensity / rdm.scaledDensity;
23: y *= wdm.scaledDensity / rdm.scaledDensity;
24:
25: // 后再发送Android点击消息
26: if (longClick)
27: clickLongOnScreen(x, y, time);
28: else
29: clickOnScreen(x, y);
30: }
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11