一、简介:
以前因为手机root权限问题,一直没有实现脚本自动化测试,最近看了一些博客,进行了一些实验,发现自己根据adb命令来写一下脚本来执行自动化测试也是可行的,主要是为了解放双手,顺便测试一下程序的稳定性。
脚本来执行测试的优缺点
- 写起来容易
- 基本上可以实现90%以上的功能性覆盖
- 测试结果需要通过自己观察整个过程和日志文件来得出的
- 有些外部的动作,脚本是无法实现的,比如需要录入指纹
- 只适配特定尺寸的设备
- 没法对内容进行校验
- 执行命令间隔时间要把控好
二、运用:
1.简单运用
比如在mac上,写一个解锁的
shell
脚本,点亮程序解锁;首先要知道解锁密码,或者图案密码,人脸、虹膜、指纹肯定是不行的;
#!/bin/bash
adb shell svc power stayon true #解锁亮屏
sleep 0.2
adb shell input keyevent 82 #只针对于非密码指纹图案等锁屏
sleep 0.2
adb shell input text 123456 && adb shell input keyevent 66
sleep 0.6
执行脚本
sh test.sh
2.adb shell input keyevent详解
adb shell input keyevent
82
(
键值
)
电话键
键名 | 描述 | 键值 |
KEYCODE_CALL | 拨号键 | 5 |
KEYCODE_ENDCALL | 挂机键 | 6 |
KEYCODE_HOME | 按键Home | 3 |
KEYCODE_MENU | 菜单键 | 82 |
KEYCODE_BACK | 返回键 | 4 |
KEYCODE_SEARCH | 搜索键 | 84 |
KEYCODE_CAMERA | 拍照键 | 27 |
KEYCODE_FOCUS | 拍照对焦键 | 80 |
KEYCODE_POWER | 电源键 | 26 |
KEYCODE_NOTIFICATION | 通知键 | 83 |
KEYCODE_MUTE | 话筒静音键 | 91 |
KEYCODE_VOLUME_MUTE | 扬声器静音键 | 164 |
KEYCODE_VOLUME_UP | 音量增加键 | 24 |
KEYCODE_VOLUME_DOWN | 音量减小键 | 25 |
控制键
KEYCODE_ENTER | 回车键 | 66 |
KEYCODE_ESCAPE | ESC键 | 111 |
KEYCODE_DPAD_CENTER | 导航键 确定键 | 23 |
KEYCODE_DPAD_UP | 导航键 向上 | 19 |
KEYCODE_DPAD_DOWN | 导航键 向下 | 20 |
KEYCODE_DPAD_LEFT | 导航键 向左 | 21 |
KEYCODE_DPAD_RIGHT | 导航键 向右 | 22 |
KEYCODE_MOVE_HOME | 光标移动到开始键 | 122 |
KEYCODE_MOVE_END | 光标移动到末尾键 | 123 |
KEYCODE_PAGE_UP | 向上翻页键 | 92 |
KEYCODE_PAGE_DOWN | 向下翻页键 | 93 |
KEYCODE_DEL | 退格键 | 67 |
KEYCODE_FORWARD_DEL | 删除键 | 112 |
KEYCODE_ IN SERT |
插入键 | 124 |
KEYCODE_TAB | Tab键 | 61 |
KEYCODE_NUM_LOCK | 小键盘锁 | 143 |
KEYCODE_CAPS_LOCK | 大写锁定键 | 115 |
KEYCODE_BREAK | Break/Pause键 | 121 |
KEYCODE_SCROLL_LOCK | 滚动锁定键 | 116 |
KEYCODE_ZOOM_IN | 放大键 | 168 |
KEYCODE_ZOOM_OUT | 缩小键 | 169 |
基本
KEYCODE_0 | 按键’0′ | 7 |
KEYCODE_1 | 按键’1′ | 8 |
KEYCODE_2 | 按键’2′ | 9 |
KEYCODE_3 | 按键’3′ | 10 |
KEYCODE_4 | 按键’4′ | 11 |
KEYCODE_5 | 按键’5′ | 12 |
KEYCODE_6 | 按键’6′ | 13 |
KEYCODE_7 | 按键’7′ | 14 |
KEYCODE_8 | 按键’8′ | 15 |
KEYCODE_9 | 按键’9′ | 16 |
KEYCODE_A | 按键’A’ | 29 |
KEYCODE_B | 按键’B’ | 30 |
KEYCODE_C | 按键’C’ | 31 |
KEYCODE_D | 按键’D’ | 32 |
KEYCODE_E | 按键’E’ | 33 |
KEYCODE_F | 按键’F’ | 34 |
KEYCODE_G | 按键’G’ | 35 |
KEYCODE_H | 按键’H’ | 36 |
KEYCODE_I | 按键’I’ | 37 |
KEYCODE_J | 按键’J’ | 38 |
KEYCODE_K | 按键’K’ | 39 |
KEYCODE_L | 按键’L’ | 40 |
KEYCODE_M | 按键’M’ | 41 |
KEYCODE_N | 按键’N’ | 42 |
KEYCODE_O | 按键’O’ | 43 |
KEYCODE_P | 按键’P’ | 44 |
KEYCODE_Q | 按键’Q’ | 45 |
KEYCODE_R | 按键’R’ | 46 |
KEYCODE_S | 按键’S’ | 47 |
KEYCODE_T | 按键’T’ | 48 |
KEYCODE_U | 按键’U’ | 49 |
KEYCODE_V | 按键’V’ | 50 |
KEYCODE_W | 按键’W’ | 51 |
KEYCODE_X | 按键’X’ | 52 |
KEYCODE_Y | 按键’Y’ | 53 |
KEYCODE_Z | 按键’Z’ | 54 |
详细介绍:
Android adb shell input keyevent code整理
支持的KEYCODE
0 –> “KEYCODE_UNKNOWN”
1 –> “KEYCODE_MENU”
2 –> “KEYCODE_SOFT_RIGHT”
3 –> “KEYCODE_HOME”
4 –> “KEYCODE_BACK”
5 –> “KEYCODE_CALL”
6 –> “KEYCODE_ENDCALL”
7 –> “KEYCODE_0”
8 –> “KEYCODE_1”
9 –> “KEYCODE_2”
10 –> “KEYCODE_3”
11 –> “KEYCODE_4”
12 –> “KEYCODE_5”
13 –> “KEYCODE_6”
14 –> “KEYCODE_7”
15 –> “KEYCODE_8”
16 –> “KEYCODE_9”
17 –> “KEYCODE_STAR”
18 –> “KEYCODE_POUND”
19 –> “KEYCODE_DPAD_UP”
20 –> “KEYCODE_DPAD_DOWN”
21 –> “KEYCODE_DPAD_LEFT”
22 –> “KEYCODE_DPAD_RIGHT”
23 –> “KEYCODE_DPAD_CENTER”
24 –> “KEYCODE_VOLUME_UP”
25 –> “KEYCODE_VOLUME_DOWN”
26 –> “KEYCODE_POWER”
27 –> “KEYCODE_CAMERA”
28 –> “KEYCODE_CLEAR”
29 –> “KEYCODE_A”
30 –> “KEYCODE_B”
31 –> “KEYCODE_C”
32 –> “KEYCODE_D”
33 –> “KEYCODE_E”
34 –> “KEYCODE_F”
35 –> “KEYCODE_G”
36 –> “KEYCODE_H”
37 –> “KEYCODE_I”
38 –> “KEYCODE_J”
39 –> “KEYCODE_K”
40 –> “KEYCODE_L”
41 –> “KEYCODE_M”
42 –> “KEYCODE_N”
43 –> “KEYCODE_O”
44 –> “KEYCODE_P”
45 –> “KEYCODE_Q”
46 –> “KEYCODE_R”
47 –> “KEYCODE_S”
48 –> “KEYCODE_T”
49 –> “KEYCODE_U”
50 –> “KEYCODE_V”
51 –> “KEYCODE_W”
52 –> “KEYCODE_X”
53 –> “KEYCODE_Y”
54 –> “KEYCODE_Z”
55 –> “KEYCODE_COMMA”
56 –> “KEYCODE_PERIOD”
57 –> “KEYCODE_ALT_LEFT”
58 –> “KEYCODE_ALT_RIGHT”
59 –> “KEYCODE_SHIFT_LEFT”
60 –> “KEYCODE_SHIFT_RIGHT”
61 –> “KEYCODE_TAB”
62 –> “KEYCODE_SPACE”
63 –> “KEYCODE_SYM”
64 –> “KEYCODE_EXPLORER”
65 –> “KEYCODE_ENVELOPE”
66 –> “KEYCODE_ENTER”
67 –> “KEYCODE_DEL”
68 –> “KEYCODE_GRAVE”
69 –> “KEYCODE_MINUS”
70 –> “KEYCODE_EQUALS”
71 –> “KEYCODE_LEFT_BRACKET”
72 –> “KEYCODE_RIGHT_BRACKET”
73 –> “KEYCODE_BACKSLASH”
74 –> “KEYCODE_SEMICOLON”
75 –> “KEYCODE_APOSTROPHE”
76 –> “KEYCODE_SLASH”
77 –> “KEYCODE_AT”
78 –> “KEYCODE_NUM”
79 –> “KEYCODE_HEADSETHOOK”
80 –> “KEYCODE_FOCUS”
81 –> “KEYCODE_PLUS”
82 –> “KEYCODE_MENU”
83 –> “KEYCODE_NOTIFICATION”
84 –> “KEYCODE_SEARCH”
85 –> “TAG_LAST_KEYCODE”
3.常用命令
获取手机设备号
adb devices
adb devices -l
打电话
adb shell am start -a android.intent.action.CALL -d tel:10088
列出(包名)所有安装的应用apk
adb shell pm list packages #列出所有安装的应用,包含系统和第三方
adb shell pm list packages -3 #列出所有第三方应用
adb shell pm list packages -s #列出所有系统应用
根据包名找出apk在内部存储空间的路径(如支付宝)
adb shell pm path com.eg.android.AlipayGphone
将apk文件导出
adb pull /data/app/com.baicells.voip-1/base.apk voip.apk
查看应用(如支付宝)的package包名和activity名
adb shell dumpsys window w | findstr \/ | findstr name=
打开支付宝
adb shell am start com.eg.android.AlipayGphone/com.eg.android.AlipayGphone.AlipayLogin
打开微信
adb shell am start com.tencent.mm/com.tencent.mm.ui.LauncherUI
打开QQ
adb shell am start -a android.intent.action.MAIN -c android.intent.category.LAUNCHER -n com.tencent.mobileqq/com.tencent.mobileqq.activity.SplashActivity
关闭应用包含进程(如支付宝 )
adb shell am force-stop com.eg.android.AlipayGphone
从电脑向手机安装应用
adb -s NPE4C17302001740 install E:\com.tencent.mobileqq.apk #从电脑向手机安装应用
adb -s NPE4C17302001740 install -r E:\com.tencent.mobileqq.apk #强制安装
# -s 后是设备名称,若只链接了一个设备可以不加
卸载
adb uninstall com.tencent.mobileqq #卸载手机里面的应用(如QQ)
或
adb shell pm uninstall com.tencent.mobileqq
adb uninstall -k com.tencent.mobileqq #卸载app但保留数据和缓存文件
点击事件
adb shell input tap 500 500
截图(保存到SDCard)
adb shell /system/bin/screencap -p /sdcard/screenshot.png
录屏
adb shell screenrecord /sdcard/test.mp4
adb pull /sdcard/test.mp4 /Users/dhht/Desktop/test.mp4
上下滑动
adb shell input swipe 700 2000 700 1000
左右滑动
adb shell input swipe 100 1000 1000 1000
在手机文本框中输入文本信息
adb shell input text lalalala #文本信息:lalalala<不支持中文>
截取日志
adb logcat > e:1.log
adb bugreport > e:2.log
屏幕长亮
adb shell svc power stayon true [true|false|usb|ac|wireless]
查看手机分辨率
adb shell wm size
查看进程
adb shell service list
列出手机参数
adb shell getprop
手机重启
adb reboot recovery #重启手机到recovery界面
adb reboot bootloader #重启手机到bootloader界面
获取更多参考:
未完待续。。。