Android | adb命令编写Android自动化测试脚本

一、简介:

以前因为手机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_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" 
 

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界面

获取更多参考:

玩转ADB命令(ADB命令使用大全) 

adb shell 常用命令

 

未完待续。。。

你可能感兴趣的:(Android,adb)