以前因为手机root权限问题,一直没有实现脚本自动化测试,最近看了一些博客,进行了一些实验,发现自己根据adb命令来写一下脚本来执行自动化测试也是可行的,主要是为了解放双手,顺便测试一下程序的稳定性。
脚本来执行测试的优缺点
比如在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
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_INSERT | 插入键 | 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"
获取手机设备号
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界面
获取更多参考:
玩转ADB命令(ADB命令使用大全)
adb shell 常用命令
未完待续。。。