基于键盘事件和图像识别的自动化测试
OPhone平台在操作系统层面提供将键盘事件转化为应用程序动作的能力:
步骤 | 动作 |
1 | Window Manager 收到来自于linux键盘驱动的按键事件。 |
2 | Window Manager 把scancode映射成keycode。 |
3 | Window Manager 把 scancode和keycode都发给应用程序。 |
4 | 应用程序对按键事件进行响应。 |
OPhone平台还提供了功能丰富的开发调试工具和工具库,如adb、sqlite3、viewserver和ddmlib等,这些为我们探索新的自动化测试方法提供了技术基础。
像上述的键盘事件,我们就可以通过adb shell input命令发送给设备,同时我们也可以通过adb shell sendevent命令实现对触摸屏的操作。例如,想实现这样的过程:一、进入DCD应用的主界面;二、用向左滑动的触摸屏手势做翻页操作;三、调起该界面的菜单;四、退出DCD主界面,就可以用如下命令实现:
java代码
//启动DCD主界面 adb shell am start -n oms.dcd/oms.dcd.DcdClient //在x向坐标00000095、y向坐标00000007的位置点击屏幕,并保持按下状态 adb shell sendevent /dev/input/event0: 0003 0000 00000095 adb shell sendevent /dev/input/event0: 0003 0001 00000007 adb shell sendevent /dev/input/event0: 0001 014a 00000001 //保持y向坐标不变,沿00000055到00000010的x向路径横向滑动 adb shell sendevent /dev/input/event0: 0003 0000 00000055 adb shell sendevent /dev/input/event0: 0000 0000 00000000 …… adb shell sendevent /dev/input/event0: 0003 0000 00000010 adb shell sendevent /dev/input/event0: 0000 0000 00000000 //结束按下状态 adb shell sendevent /dev/input/event0: 0001 014a 00000000 //发送一个菜单键值,调起菜单 adb shell input keyevent 1 //发送一个Back键值,收回菜单 adb shell input keyevent 4 //再发送一个Back键值,退出DCD界面 adb shell input keyevent 4 |