必须掌握的ADB命令 | 让你的测试事半功倍

>>>> 什么是ADB

ADB的全称是Android Debug Bridge,是一个与模拟器或者连接设备通讯的桥梁。ADB是CS结构包含三个部分:

  1. 运行在PC端的client:可以通过它对Android应用进行安装、卸载及调试 启动client的时候,首先检查adb的server是否在运行。如果没有运行,则启动server。若server已经在运行,则所有的client都使用端口5037。
  2. 运行在PC端的Server:其管理客户端到Android设备上adb后台进程的连接 可以通过命令adb kill-serveradb start-server进行server的重启。
  3. 运行在Android设备的后台进程

>>>> ADB的作用

ADB的功能异常强大,在测试过程中合理的使用能够达到事半功倍的效果。以下的章节,我们就来介绍下常用的adb命令。

>>>> adb shell am

使用adb shell am可以启动activity,services,发送broadcast等。其中am是ActivityManager的缩写。ActivityManager的功能是与系统中所有运行着的Activity交互提供了接口,主要的接口围绕着运行的进程信息,任务信息,服务信息等。

在命令行或shell中执行命令adb shell am将会列出am的使用方法:

下面笔者将介绍测试过程中常用的命令:

1、adb shell am start

使用该命令需要后接参数已经PackageName/Activity类的类名来启动activity。而PackageName和Activity列表可以通过文件AndroidManifest.xml文件查看。 例如Package的名字是com.example.lvchongen.adbdemo,而仅有的activity是MainActivity

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.lvchongen.adbdemo" >
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
    android:name=".MainActivity"
    android:label="@string/app_name" >
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>
</application>
</manifest>

下面重点介绍下不同的参数的使用方法:

-W:wait for launch to complete,等待启动完成后返回启动的时间,启动时间是判断APP性能的重要指标之一。类WaitResult的实例res将会记录Activity的启动结果用于对状态进行判断。

-S:force stop the target app before starting the activity,在启动Activity之前先判断时候已经启动,若启动则关闭进程后再次开启;若未启动,则直接打开Activity。

2、adb shell am startservice

使用该命令能够启动app中的service,前提是在注册service的时候,需要使用属性android:exported="true"。本例中作者在app中注册了一个服务DemoService,并在其中添加了log以记录当前服务的状态。

  • 通过点击两个按钮来实现service的启动与停止
  • 在service中添加log用来记录service的状态
  • 在手机端或者模拟器运行app后,点击按钮来启动或停止service,可以通过命令adb logcat | grep -i DemoService来查看当前服务的状态。首先查看当前的service状态,DemoService并未启动;之后使用adb shell am startservice com.example.adbdemo/.DemoService来启动servcie;最后使用命令adb logcat查看当前的service状态。

我们可以看到,通过这条命令成功的将DemoService启动。

3、adb shell am stopservice

与startservice相反,这条命令能够停止已经启动的服务。当服务未启动的时候,执行该命令则返回Service not stopped: was not running的信息。这里我们沿用startservice中的例子。

  • 通过点击按钮Start Service来启动DemoService
  • 执行命令adb shell am stopservice com.example.adbdemo/.DemoService来停止DemoService。
  • 当DemoService已经停止后,再次执行adb shell am stopservice命令来查看结果:

可以看到,该命令能够成功停止正在运行的service。

4、adb shell am force-stop

使用该命令的接受参数是APK包名,用来停止正在运行的app。

  • 通过使用命令ps | grep adbdemo来确认app正在运行中。
  • 执行命令adb shell am force-stop com.example.adbdemo来停止app。
  • 再次执行命令ps | grep adbdemo来确认app已经停止运行。

5、adb shell am kill

使用该命令传入的参数是APK的包名,用来杀掉在后台运行的APK。

  • 通过使用命令ps | grep adbdemo来确认app正在运行中。
  • 保证apk在后台运行。
  • 执行命令adb shell am kill com.example.adbdemo来杀死后台的进程。
  • 重复使用命令ps | grep adbdemo来确认app已经停止运行。

6、adb shell am broadcast

使用该命令可以通过系统发送指定的广播,为了演示这个例子,我们需要修改示例的代码用来接受广播。

7、adb shell am dumpheap

使用该命令可以获取指定进程的内存使用情况。

  • 该命令的输入参数可以是进程的pid或者是apk的包名,我们的demo示例的包名是com.example.adbdemo。也可以通过使用命令ps | grep adbdemo来获取当前apk的pid。这里我们为了方便,仅仅使用apk的包名作为输入参数。
  • 该命令会生成hprof文件,该文件可以通过Memory Analysis或者Android Studio打开,文件内记载了不同数据类型等内存的使用情况,通过该文件我们可以分析到内存泄露或者值得优化的地方。
  • 首先使用命令adb shell am dumpheap com.example.adbdemo /data/local/tmp/demo.hprof来生成记录进程内存使用情况的文件demo.hprof,之后再使用命令adb pull /data/local/tmp/demo.hprof ./将文件存储到指定的位置。
  • 这里我们使用Android Studio将生成的文件打开,通过查看不同的类型的内存使用情况,进行内存的分析与优化,关于内存分析与优化不在这里赘述。

>>>> adb shell pm

使用adb shell pm命令可以模拟android行为或者查询设备上的应用等,其中pm是packagemanager的缩写。

下面笔者将介绍测试过程中常用的命令:

1、adb shell pm list package

  • 该命令用于列出设备中apk的相关信息,通过参数控制来进行不同信息的展示。

Filter参数

作用

-f

查看所有的关于apk的相关文件

-d

只展示被disable的apk信息

-e

只展示enable的apk信息

-s

只展示系统自带的apk信息

-3

只展示第三方apk的信息

-i

查看所有apk对应的安装源

-u

展示所有apk信息,包含未安装的apk

  • 以下是使用adb shell pm list package -s的返回结果。

2、adb shell pm list permission-groups

该命令是用于列出设备中所有的permission-group。

  • 执行命令adb shell pm list permission-groups将返回如下结果:

3、adb shell pm list permissions

该命令用于列出设备中所有的应用所需要的权限。

  • 执行命令adb shell pm list permissions将返回如下结果:

4、adb shell pm path

该命令后接apk的包名,用于列出该apk的安装路径。

  • 执行命令adb shell pm path com.example.adbdemo后将返回如下结果:

5、adb shell pm dump

该命令后接apk的包名,用于列出与该apk相关的系统信息。

  • 执行命令adb shell pm dump com.example.adbdemo后将返回如下结果:

6、adb shell pm install

该命令后接apk在手机或模拟器中的绝对路径,并通过不同的参数控制APK的安装。

  • 在ADB中有两个命令可以用于安装APK,一个是adb install,而另一个就是pm install,通过阅读源代码我们发现其实adb install最终还是调用pm install,那么两者的差别在哪里呢?adb install先将安装包push到手机或模拟器的一个临时位置,再执行pm install进行安装。
  • 首先将生成的ADBDemo.apk推送到/sdard/中,再执行命令adb shell pm install /sdcard/ADBDemo.apk。返回如下结果表示安装成功:
  • 常用的几个参数是-r,-s-f,分别代表覆盖安装安装到外部存储安装到内部存储

7、adb shell pm uninstall

该命令后接apk的包名,用于卸载已经安装在手机或模拟器的APK。

  • 执行命令adb shell pm uninstall com.example.adbdemo进行卸载的操作,返回如下结果:

8、adb shell pm clear

该命令后接apk的包名,用于清除apk的应用数据,而这部分数据一般存储与/data/data下,主要记录了用户的行为所产生的应用数据。成功清除的标志是再次打开应用时,应用本地记录的数据已经消失,呈现的界面和第一次安装该应用相同。

  • 执行命令adb shell pm clear com.example.adbdemo进行清除数据的操作,返回如下结果:

>>>> adb shell appops

使用adb shell appops系列命令可以查看或修改APK的相关权限,在实际测试的过程中,我们可以通过禁用某种权限来测试程序的异常处理以及与用户的相关交互。

下面笔者将介绍测试过程中常用的命令:

1、adb shell appops get

该命令后接apk的包名,用于获取应用的权限申请列表及时间。以下以微信的apk为例:

  • 首先在官网下载微信的最新apk,之后执行命令aapt dump badging weixin.apk来查看apk的相关信息,这里我们要获取准确的包名以及应用需要的权限列表。从返回的结果,我们得知微信的包名是com.tencent.mm
  • 在正常使用过一段时间微信后(赋予微信权限后),我们使用命令adb shell appops get com.tencent.mm来获取权限列表。这里可以看到微信已经申请了四个权限,分别是WAKE_LOCK,OP_READ_PHONE_STATE,READ_EXTERNAL_STORAGEWRITE_EXTERNAL_STORAGE

2、adb shell appops set

该命令后接APK的包名,权限的名称以及对应的控制标示符,其中标示符为allow,deny,ignoredefault,分别代表允许,禁止,忽略和默认。

  • 通过上面的例子我们得知微信有对外部存储写入的权限WRITE_EXTERNAL_STORAGE: allow; time=+1s798ms ago,本例我们将禁止该权限,则使用命令adb shell appops set com.tencent.mm WRITE_EXTERNAL_STORAGE deny来修改权限。从返回的结果来看,我们的确对微信停止了该权限的授权。

3、adb shell appops reset

该命令后接APK的包名,用于重新设置应用的权限,恢复到用户第一次授权的状态下。

  • 使用命令adb shell appops reset com.tencent.mm来恢复READ_EXTERNAL_STORAGE的权限,reset后我们再次查看,发现权限已经被allow

>>>> adb shell wm

使用adb shell wm系列命名能够获取或设置设备的屏幕分辨率,DPI和overscan。

下面笔者将介绍几个常用的命令:

1、adb shell wm size

该命令可以获取当前设备的屏幕分辨率以及重新设置分辨率,但设置的分辨率是临时的,将在手机重启后恢复正常,在root后可以通过修改系统文件将默认分辨率永久修改,感兴趣的读者可以试验下,这里就不赘述了。

  • 笔者使用的测试机是Nexus5,使用命令adb shell wm size获得当前的分辨率1080P。
  • 现在使用命令adb shell wm size HxW来设置自定义的分辨率。例如adb shell wm size 720x1080

我们可以看到修改分辨率后的效果"惨目忍睹":

  • 现在使用命令adb shell wm size reset来恢复系统的默认分辨率。

2、adb shell wm density

该命令可以获取当前设备的屏幕密度以及重新设置屏幕密度,同样该设置是临时的。

  • 笔者使用的测试机是Nexus5,使用命令adb shell wm density来查看手机的屏幕密度。
  • 现在使用命令adb shell wm density 300来重新设置屏幕的密度。
  • 设置后手机中的页面是这样的,可以看到画面被压缩的比较严重。
  • 最后可以使用命令adb shell wm density reset来恢复系统默认的屏幕密度。

3、adb shell wm overscan

该命令可以将屏幕显示限定在一定区域内,同样这些设置是临时的。

  • 笔试使用命令adb shell wm overscan 0,0,0,540来限制显示的区域,操作后显示效果如下图:
  • 最后可以使用命令adb shell wm overscan reset来恢复屏幕的显示区域。

>>>> adb shell svc

该命令是用于控制电源管理,wifi开关,数据流量等。存在于/system/bin目录下,可见在执行的时候需要root权限。

因为笔者的设备没有root权限,所以只是简单介绍几个svc的命令:

1、adb shell svc data enable/disable

该命令用于操作数据流量的开关

2、adb shell svc wifi enable/disable

该命令用于操作wifi的开关

3、adb shell svc power stayon true/false/usb/ac

该命令用于设置屏幕时候常亮,其中usb表示插入usb的时候常亮,ac表示插入电源时常亮。

>>>> adb shell settings

该命令用于获取或设置一些系统级别的选项。使用格式是adb shell settings get/put/delete secure/system/global parameter

1、命令中的操作符get/put/delete

  • get:用于获取参数的值
  • put:用于设置参数的值
  • delete:用于删除参数存在的值。

2、命令中的namespace

  • system:包含了各种各样的系统属性,可以在官网帮助文档http://developer.android.com/intl/zh-cn/reference/android/provider/Settings.System.html中查看不同属性的含义。
  • secure:包含各种对application只读的属性,如果需要修改这些属性,用户必须通过系统UI或者特殊的api进行配置,不能被application直接修改。可以在官网帮助文档http://developer.android.com/intl/zh-cn/reference/android/provider/Settings.Secure.html中查看不同属性的含义。
  • global:包含了针对预定义用户的系统属性,和secure相同,对application是只读的,只能通过api或者系统UI进行修改。可以在官网帮助文档http://developer.android.com/intl/zh-cn/reference/android/provider/Settings.Global.html中查看不同属性的含义。

3、几个展示adb shell settings的例子

以上就是adb shell settings的用法,具体的属性可以在上文中提到的帮助文档去查询,根据自己的需求来使用对应的命令。

  • adb shell settings get secure default_input_method获取默认的输入法。可以看到这里使用了谷歌输入法作为默认的输入法。
  • adb shell settings put system screen_brightness 100调节屏幕的显示亮度
  • adb shell settings get system screen_off_timeout获取屏幕自动休眠的时间。 这里可以看到,屏幕自动熄灭的时间间隔是2分钟。

我们使用命令得到的结果是120000毫秒,也就是2分钟。

>>>> adb shell input

该命令用于模拟键盘,按键和触摸屏幕等事件。使用格式是adb shell input [event] command。 其中[event]是不同的事件。

1、adb shell input text

该命令可以用来输入一些指定的字符,笔者使用命令adb shell input text 'HelloADB'来在可编辑的界面进行输入:

可以看到,在搜索页面出现了通过命令输入的HelloADB

2、adb shell input keyevent

该命令可以用来模拟键盘的输入,在keyevent后接键盘按键的对应键码即可。例如模拟点击菜单按钮就可以使用命令adb shell input keyevent KEYCODE_MENU。常用的按键键码如下表格:

对应键码

按键

对应键码

按键

0

KEYCODE_UNKNOWN

43

KEYCODE_O

1

KEYCODE_MENU

44

KEYCODE_P

2

KEYCODESOFTRIGHT

45

KEYCODE_Q

3

KEYCODE_HOME

46

KEYCODE_R

4

KEYCODE_BACK

47

KEYCODE_S

5

KEYCODE_CALL

48

KEYCODE_T

6

KEYCODE_ENDCALL

49

KEYCODE_U

7

KEYCODE_0

50

KEYCODE_V

8

KEYCODE_1

51

KEYCODE_W

9

KEYCODE_2

52

KEYCODE_X

10

KEYCODE_3

53

KEYCODE_Y

11

KEYCODE_4

54

KEYCODE_Z

12

KEYCODE_5

55

KEYCODE_COMMA

13

KEYCODE_6

56

KEYCODE_PERIOD

14

KEYCODE_7

57

KEYCODEALTLEFT

15

KEYCODE_8

58

KEYCODEALTRIGHT

16

KEYCODE_9

59

KEYCODESHIFTLEFT

17

KEYCODE_STAR

60

KEYCODESHIFTRIGHT

18

KEYCODE_POUND

61

KEYCODE_TAB

19

KEYCODEDPADUP

62

KEYCODE_SPACE

20

KEYCODEDPADDOWN

63

KEYCODE_SYM

21

KEYCODEDPADLEFT

64

KEYCODE_EXPLORER

22

KEYCODEDPADRIGHT

65

KEYCODE_ENVELOPE

23

KEYCODEDPADCENTER

66

KEYCODE_ENTER

24

KEYCODEVOLUMEUP

67

KEYCODE_DEL

25

KEYCODEVOLUMEDOWN

68

KEYCODE_GRAVE

26

KEYCODE_POWER

69

KEYCODE_MINUS

27

KEYCODE_CAMERA

70

KEYCODE_EQUALS

28

KEYCODE_CLEAR

71

KEYCODELEFTBRACKET

29

KEYCODE_A

72

KEYCODERIGHTBRACKET

30

KEYCODE_B

73

KEYCODE_BACKSLASH

31

KEYCODE_C

74

KEYCODE_SEMICOLON

32

KEYCODE_D

75

KEYCODE_APOSTROPHE

33

KEYCODE_E

76

KEYCODE_SLASH

34

KEYCODE_F

77

KEYCODE_AT

35

KEYCODE_ G

78

KEYCODE_NUM

36

KEYCODE_H

79

KEYCODE_HEADSETHOOK

37

KEYCODE_I

80

KEYCODE_FOCUS

38

KEYCODE_J

81

KEYCODE_PLUS

39

KEYCODE_K

82

KEYCODE_MENU

40

KEYCODE_L

83

KEYCODE_NOTIFICATION

41

KEYCODE_M

84

KEYCODE_SEARCH

42

KEYCODE_N

85

TAGLASTKEYCODE

3、adb shell input tap

该命令用于模拟点击屏幕,位置用坐标来表示,如需要点击坐标(100,100)的位置,需要使用命令adb shell input tap 100 100即可。

4、adb shell input swipe

该命令用于模拟划动屏幕的操作,使用方法为adb shell input swipe x y x1 y1 time, 其中x,y,x1,y1为起点和终点的坐标,而time是划动所需的时间。

例如使用命令adb shell input swipe 50 1250 250 100 500进行android菜单的向下划动。

5、adb shell input press

该命令用于显示traceball,打开traceball的步骤是:

  1. 开启开发者选项。
  2. 在输入一栏,找到显示触摸操作,将开关置为开。

6、adb shell input roll

该命令用于点击traceball所在的位置。

以上就是所有adb shell input相关的命令和用法。在实际中,我们可以在执行自动化用例的时候,穿插使用这些模拟输入来实现自动化用例的顺利执行。

>>>> adb shell dumpsys

该命令用于打印系统的信息,如activity,cpu和电量等信息。对于我们了解当前系统的状态,以及在测试过程中获取app对系统的影响提供了数据依据。

1、adb shell dumpsys cpuinfo

用于打印当前手机或模拟器中cpu的相关信息。

这里可以看到,会根据当前cpu的使用比例从大到小排序。我们可以很快找到测试app所占用的cpu信息。

2、adb shell dumpsys battery

用于打印当前手机或模拟器的电量相关信息。

因为笔者使用了USB线连接了手机与电脑,故显示USB powered: true

3、adb shell dumpsys package

用于打印模拟器或手机中app的相关信息。

  1. 该命令的参数比较多, 可以通过使用命令adb shell dumpsys package -h来获取具体参数的作用和使用方法。
  1. 这里我们通过一个简单的例子来演示实际中如何使用该组命令, 例如我们想查看模拟器或手机中安装带有tencent包名的app, 需要使用命令adb shell dumpsys package -p | grep -i tencent

4、adb shell dumpsys activity

用于打印模拟器或手机中activity的相关信息。

  1. 同样,该命令的参数比较多,我们可以使用命令adb shell dumpsys activity -h来获取具体参数的作用和使用方法。
  1. 这里我们通过一个具体的参数来演示其使用方法,其他的参数使用方法类似,就不一一举例。我们想获取当前在前台app的activity相关信息,需要使用命令adb shell dumpsys activity top。例如本例中我们将设置页面置于前台,然后输入命令查看实际的结果:

我们可以看到这样的字样TASK com.android.settings id=415,顾名思义这就是设置app的包名,与我们预期的结果一致。

合理的使用dumpsys系列的命令,能够有效的获取当前系统或app的信息, 在性能测试中使用的尤为多,想要学好移动端的性能测试,掌握这个命令是必不可少的。

>>>> adb logcat

该命令用于查看和跟踪系统日志,一般在调试中经常用到,病尝尝与过滤命令grep一起调用。

1、常用的Android Log方法

  • Log.v:这里的v是verbose的缩写,有啰嗦的意思,所以这个命令是任何信息都会输出
  • Log.d:这里的d是debug的缩写,可以通过使用DDMS和Logcat进行过滤
  • Log.i:这里的i是information的缩写,指的是一般提示性的消息
  • Log.w:这里的w是waring的缩写,当有这样警告的信息出现时,我们需要注意进行代码的优化,因为这些警告很可能成为潜在的bug
  • Log.e:这里的e是error的缩写,出现错误的警告时,意味着我们的代码包含错误或者配置错误,必须进行修改

2、使用adb logcat查看log信息

  • 首先在之前的例子中添加按钮,点击按钮会生成一份log信息,核心代码如下
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
logInfo = (Button)findViewById(R.id.startLog);
logInfo.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {   
        Log.d("ADB", "HelloADB");   
    }
});
}
  • 在终端使用命令adb logcat | grepi -i helloadb来进行监测, 同时在app中点击按钮。可以看到,这里显示出了了我们记录的log信息HelloADB。在实际中,常常使用grep对返回的结果进行过滤。grep命令这里就不进行赘述了。

3、logcat的日志格式控制

这里举一个使用的例子,如果我们想查看对应进程的pid,我们可以使用命令adb logcat -v brief | grep -i helloadb

  • 日志信息可以通过控制字段进行过滤,来获取用户最想得到信息。使用方式是adb logcat -v [parameter]。下表就是parameter的定义: | 参数 | 作用 | | ------------- |:-------------:| | long | 显示所有的元数据字段并且用空行分隔消息内容 | | time | 显示日期,调用时间,优先级/标记,PID| | raw | 显示原始的日志信息,没有其他的元数据字段 | | thread | 仅显示进程:线程和优先级/标记 | | tag | 仅显示优先级/标记 | | process | 仅显示进程PID | | brief | 显示优先级/标记和原始进程的PID |

合理运用logcat能够帮助我们在调试过程中尽快定位问题,事半功倍。

>>>> adb push/pull

该组命令是日常中使用比较频繁的命令,其中push用于将本地的文件推送到模拟器或手机中,而pull用于将模拟器或手机中的文件拉取到本地。

1、adb pull

  • 首先,在手机中创建文件testFile,存储路径在/sdcard/
  • 在电脑端使用命令adb pull /sdcard/testFile来将testFile文件拉取到本地。

我们也可以在pull的过程中修改文件名,格式为adb pull sourceFile newName,如:

2、adb push

  • 首先在本地创建文件sourceFile,这次我们想将该文件推送到手机的sdcard下,需要使用命令adb push sourceFile /sdcard/
  • 同样,如果我们希望在推送的过程中修改文件的名字,需要使用如下命令adb push sourceFile path/newName

以上就是pull/push的使用方法,我们常常使用这组命令获取程序运行时产生的log文件。

>>>> adb devices

该命令用于展示目前已经连接到adb server的设备列表。

1、使用命令adb devices获取设备列表

2、当有多个设备连接到adb server时,我们的任何adb命令都需要添加参数-s deviceID才可以进行操作。所以必须先通过adb devices获取设备id。

在实际中,我们通常使用该命令来查看设备当前的状态,以及获取设备的ID来进行操作。如果通过USB Hub实现多个手机的连接,分发不同手机进行自动化测试的时候,该命令尤其重要。

>>>> adb start/kill server

该组命令用于启动和停止adb server。在修改adb的配置后,需要重启adb server。这组命令会派上用场。

1、查看adb server进程并重启

2、这里举一个需要重启adb server的例子,在开启USB调试功能后,仍旧存在一部分手机adb不识别的情况。我们需要获取该设备的Vendor ID,之后将该id写入当前用户根目录下的adb_usb.ini文件中。

  • 这里以MacOS举例,我们使用命令system_profiler SPUSBDataType来查看连接电脑的硬件的设备信息。
  • 在目录/Users/YourName/.android下编辑文件adb_usb.ini(如果没有该文件,则需要手动创建),将上一个步骤获得的Vendor ID写入到该文件中。
  • 执行命adb kill-server后执行命令adb start-server来实现重新启动adb server。之后我们通过adb devices可以查看到刚刚无法识别的设备。

以上的例子展示了如何使用重启adb server的使用方法。

>>>> adb shell screencap

该命令用于对手机或模拟器当前屏幕进行截图。

1、使用命令adb shell screencap /sdcard/Test.png进行截屏,并使用pull命令进行拉取。

2、打开图片后,可以看到正是使用命令进行截屏时的界面。

>>>> adb shell screenrecord

该命令用于对手机或模拟器当前的屏幕进行录制。

1、使用命令adb shell screenrecord /sdcard/Test.mp4进行录制,使用ctrl+c结束录制,使用pull命令进行拉取。

以上就是在实际测试中常用的ADB命令,熟练掌握ADB命令能够令测试事半功倍。自动化测试中也可以和ADB命令进行结合,实现特殊数据的获取或者应用的跳转等,这里就不一一介绍了。

---------------------END---------------------

原文发布于微信公众号 - 京东技术(jingdongjishu)

原文发表时间:2018-07-20

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏happyJared

Java开发人员常用的服务配置(Nginx、Tomcat、JVM、Mysql、Redis)

45210
来自专栏Java开发

Linux中bond网卡绑定方法

HWADDR对应mac地址 # ifconfig -a 可以查看 UUID对应网卡UUID Linux 查看网卡UUID

22910
来自专栏Spark学习技巧

高性能:MYSQL异步客户端

实时处理领域,当需要使用外部存储数据染色的时候,需要慎重对待,不能让与外部系统之间的交互延迟对流的整个进度取决定性的影响。

48320
来自专栏圣杰的专栏

ASP.NET Core Web App应用第三方Bootstrap模板

作为后端开发来说,前端表示玩不转,我们一般会选择套用一些开源的Bootstrap 模板主题来进行前端设计。那如何套用呢?今天就简单创建一个ASP.NET Cor...

34310
来自专栏张戈的专栏

Nginx开启fastcgi_cache缓存加速,支持html伪静态页面

张戈博客不久前分享过 Nginx 开启缓存为 WordPress 加速的教程,其中分享了 2 种缓存模式:代理模式和本地模式。我一直以为单个 ngx_cache...

94050
来自专栏何俊林

一个强大的网络库RxEasyHttp

本文来自周游的投稿,封装的网络请求库,github:https://github.com/zhou-you/RxEasyHttp,欢迎点击【阅读原文】,查看更多...

41180
来自专栏blackheart的专栏

[OIDC in Action] 1. 基于OIDC(OpenID Connect)的SSO

在[认证授权]系列博客中,分别对OAuth2和OIDC在理论概念方面进行了解释说明,其间虽然我有写过一个完整的示例(https://github.com/lin...

410100
来自专栏张戈的专栏

WordPress免插件生成完整站点地图(sitemap.xml)的php代码

前言:站点地图(sitemap.xml)的作用,相信站长们都有所了解,我就不献宝了。而免插件生成 sitemap.xml,网络上也早就有了纯代码生成的方法。 一...

40050
来自专栏流星博客

WordPress内外链自动添加GO跳转

经常看到一些博客点击外链跳转到其他网站上的时候都会有一个跳转页面,很是漂亮。据说是有利于SEO,保护站点权重,不过个人只是觉得好看、高逼格便加上了 。网上相关的...

24040
来自专栏技术博文

H5缓存机制浅析

1 H5 缓存机制介绍 H5,即 HTML5,是新一代的 HTML 标准,加入很多新的特性。离线存储(也可称为缓存机制)是其中一个非常重要的特性。H5 引入的离...

44480

扫码关注云+社区

领取腾讯云代金券