adb命令:

adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试应用。

Tips: 在 android_sdk/platform-tools/ 中找到 adb 工具,然后根据其具体的路径配置好环境变量。然后启动cmd 输入‘adb’即可查看是否配置成功。

adb的工作原理:

在客户端发送adb命令后,通过5037端口传到adb server和手机进行通信。

adb常用命令:

查看adb版本

adb  version

连接夜神模拟器(此处分别演示模拟器和真机连接)

adb connect 127.0.0.1:62001

Tips:

夜神模拟器的端口是规律的,第一个模拟器端口是62001,第二个模拟器端口是62025,第三个是62025+1,依此类推。

adb shell:

android 设备底层是 linux 系统。 shell 是 linux 系统的字符交互界面。

adb shell

#进入指定设备shell

adb  -s 127.0.0.1:62001 shell

#退出adb shell

exit

进入adb shell后有两种状态显示:#代表有root权限,$代表没有root权限

root@android:/ #

shell@mx4:/ $

root知识小科普

“To err is human, but to really foul up everything, you need root password.”

“人非圣贤孰能无过,但是拥有root密码就真的万劫不复了。”

root用户是系统中唯一的超级管理员,它具有等同于操作系统的权限。一些需要root权限的应用,譬如广告阻挡,卸载系统预装App是需要root权限的。可问题在于root比windows的系统管理员的能力更大,足以把整个系统的大部分文件删掉,导致系统完全毁坏,不能再次使用。所以,用root进行不当的操作是相当危险的,轻微的可以死机,严重的甚至不能开机。所以,在Unix、Linux及Android中,除非确实需要,一般情况下都不推荐使用root。

在设备安装apk

adb install 把apk拖到这里      回车即开始安装

adb install | -r <apkName>       -r 覆盖原安装文件 -s 可以指定设备

eg:

#默认安装

adb install "C:\Users\Shuqing\Desktop\Appium 自动化测试教程\wandoujia.apk"

#覆盖安装

adb install -r  "C:\Users\Shuqing\Desktop\Appium 自动化测试教程\wandoujia.apk"

#指定设备安装

adb  -s 127.0.0.1:62001 install  C:\Users\Shuqing\Desktop\Appium\kaoyan3.1.0.apk 自动化测试教程\wandoujia.apk"

卸载apk

1.首先进入设备的/data/app目录找到app包名

adb shell

cd /data/app/

2.执行命令删除

adb uninstall  | -k  <apkName>  卸载软件

adb uninstall  com.wandoujia.phoenix2

Tips:安装后的包名系统会在末尾加上-1之类的数字,要去掉才可以成功卸载。 软件名称为包名,不要包含.apk
-k 加 -k 参数,为卸载软件但是保留配置和缓存文件.

查看设备上面安装的应用包名

adb shell pm list package

文件读取写入

将文件从PC写入到设备

adb push <local> <remote>

eg:

adb push C:\Users\Shuqing\Desktop\kyb.txt /sdcard

C:\Users\Shuqing\Desktop\kyb.txt: 1 file pushed. 0.1 MB/s (462 bytes in 0.005s)

将文件从设备读取到PC

adb pull <remote> <local>

eg:

adb pull /sdcard/server.log  C:\Users\Shuqing\Desktop

/sdcard/server.log: 1 file pulled. 0.0 MB/s (196 bytes in 0.004s)

注意:由于权限问题,不能直接pull到电脑磁盘根目录,否则会报错:

C:\Users\Shuqing>adb pull /sdcard/server.log  D:\\

adb: error: cannot create file/directory 'D:\\': No such file or directory

屏幕截图

$ adb shell screencap /sdcard/screen.png    截图放在sdcard中

adb pull /sdcard/screen.png  C:\Users\Shuqing\Desktop  读取到电脑上

adb服务启动和关闭

adb kill-server                        关闭adb服务

adb start-server                      开启adb服务

Tips:如果5037端口被占用可以使用如下命令释放端口

C:\Users\Shuqing> netstat -ano | findstr "5037"

TCP    127.0.0.1:5037         0.0.0.0:0              LISTENING       11072

TCP    127.0.0.1:5037         127.0.0.1:59519        TIME_WAIT       0

taskkill -f -pid XXX

小结

  1. adb是自动化非常重要的一个工具
  2. 目前很多PC客户端手机助手也是基于adb连接原理进行封装的。
  3. 可以将常用的adb命令封装成bat命令,随时可以运行。如:

.bat文件创建方法:

创建一个nodepad文件,编码类型选择UTF-8,输入内容如:

adbdevices.bat

adb devices

pause

保存为所有类型,取名.bat

双击运行即可。

Appium自动化测试教程-自学网-adb命令的更多相关文章

  1. Appium自动化测试教程-自学网-monkey简介

    Monkey简介 在Android的官方自动化测试领域有一只非常著名的“猴子”叫Monkey,这只“猴子”一旦启动,就会让被测的Android应用程序像猴子一样活蹦乱跳,到处乱跑.人们常用这只“猴子” ...

  2. Appium自动化测试教程-自学网-安卓模拟器

    安卓模拟器: 夜神模拟器安装配置 下载地址:https://www.yeshen.com 开启VT VT是什么?为什么要开启VT? VT,全称是Virtualization Technology,即是 ...

  3. Appium自动化测试教程-自学网-monkeyrunner简介

    monkeyrunner简介 MonkeyRunner工具是使用Jython(使用Java编程语言实现的Python)写出来的,它提供了多个API,通过monkeyrunner API 可以写一个Py ...

  4. Appium自动化测试教程-自学网-monkey日志管理

    日志管理作用 Monkey日志管理是Monkey测试中非常重要的一个环节,通过日志管理分析,可以获取当前测试对象在测试过程中是否会发生异常,以及发生的概率,同时还可以获取对应的错误信息,帮助开发定位和 ...

  5. Appium自动化测试教程-自学网-monkey自定义脚本实践

    自定义脚本的稳定性测试 常规Monkey测试执行的是随机的事件流,但如果只是想让Monkey测试某个特定场景这时候就需要用到自定义脚本了,Monkey支持执行用户自定义脚本的测试,用户只需要按照Mon ...

  6. Appium自动化测试教程-自学网-monkey参数

    monkey 参数 参数分类 · 常规类参数 · 事件类参数 · 约束类参数 · 调试类参数 常规类参数 常规类参数包括帮助参数和日志信息参数.帮助参数用于输出Monkey命令使用指导:日志信息参数将 ...

  7. Appium自动化测试教程-自学网-SDK

    SDK:软件开发工具包,被软件开发工程师用于特定的软件包.软件框架.硬件平台.操作系统等建立应用软件的开发工具的集合. 因此,Android SDK指的是Android专属的软件开发工具包. 1,安装 ...

  8. Appium自动化测试教程-自学网-app基础知识

    Instrumentation的缺点是不支持跨应用,比如我想要先调起通讯录,在操作其他的app,则不支持. 第一步,应该确定系统哪些模块适合自动化.哪些不适合做自动化,明确做自动化给我们带来的好处是什 ...

  9. Appium自动化测试教程-自学网-Package与Activity

    Package Package 包.只是在我们的app中这个Package是唯一的,就像你身份证号码一样.在我们做app自动化时,我们就需要知道他的Package,我们知道了Package那么也就知道 ...

随机推荐

  1. java多线程上篇(二) -- 进程的控制、同步

    一.进程的控制 进程的基本数据信息是操作系统控制管理进程的数据集合,这些信息就是用来控制进程的,此处我们说的进程控制就是进程的管理. 比如进程有状态,那么进程的创建.终止,状态的切换,这都不是进程自主 ...

  2. VMware的下载与安装

    VMware的下载与安装 一.虚拟机的下载 1.进入VMware官网,点击左侧导航栏中的下载,再点击图中标记的Workstation Pro,如下图所示. 2.根据操作系统选择合适的产品,在这里以Wi ...

  3. 项目element-ui checkbox里面获取选中项 实现批量删除 修改

    <el-table :data="tableData" stripe border style="width: 100%" @selection-chan ...

  4. (十)SpringBoot之web 应用开发-Servlets, Filters, listeners

    一.需求 Web 开发使用 Controller 基本上可以完成大部分需求,但是我们还可能会用到 Servlet. FilterListene 二.案例 2.1 通过注册 ServletRegistr ...

  5. 【原创】大叔经验分享(86)hive和mysql数据互导

    hive和mysql数据互导,首先想到的是sqoop,并且可以和调度框架(比如oozie等)配合配置定时任务,还有一种更简单的方式是通过spark-sql: CREATE OR REPLACE TEM ...

  6. java封装数据类型——Integer

    今天来学习整型 int 的封装数据类型,Integer. 1. 定义 首先来看看定义.可以看到,Integer 继承 Number 抽象类,实现了 Comparable 接口.Number 类是常用数 ...

  7. 解决tensorflow 调用bug Running model failed:Invalid argument: NodeDef mentions attr 'dilations' not in Op<name=Conv2D; signature=input:T, filter:T ->

    将tensorflow C++ 版本更新为何训练版本一致即可

  8. 3、java基础:抽象类与接口的区别

    抽象类 我们都知道在面向对象的领域一切都是对象,同时所有的对象都是通过类来描述的,但是并不是所有的类都是来描述对象的.如果一个类没有足够的信息来描述一个具体的对象,而需要其他具体的类来支撑它,那么这样 ...

  9. Android开发中常见问题分析及解决

    最近公司有新的业务需求,需要开发一款APP,因为我开发过Android APP(我想告诉他们,那是4年前的事了,嘤嘤嘤),就把开发任务交给我了,当然也不是我一个人啦,让我组开发小组,说白了,就是让我来 ...

  10. [LeetCode] 283. Move Zeroes ☆(移动0到最后)

    描述 给定一个数组nums,写一个函数,将数组中所有的0挪到数组的末尾,维持其他所有非0元素的相对位置. 举例: nums = [0, 1, 0, 3, 12], 函数运行后结果为[1, 3, 12, ...