python中adb有什么功能


Posted in Python onJune 07, 2020

ADB是Android SDK中的一个工具, 使用ADB可以直接操作管理Android模拟器或者真实的Andriod设备。

ADB主要功能有:

1、在Android设备上运行Shell(命令行)

2、管理模拟器或设备的端口映射

3、在计算机和设备之间上传/下载文件

4、将电脑上的本地APK软件安装至Android模拟器或设备上

python有两种方式去调用adb命令,一种是os.system(),一种是os.popen()。

两者的区别就是前者无法获取到返回值,后者可以获取到返回值。

os.popen()返回的是file对象,可以直接利用read()方法读取。

内容扩展:

 python如何调用adb命令

Python中执行cmd命令可以用到os和subprocess两个模块。区别在于os是阻塞式的,subprocess是非阻塞式的,所以我们使用subprocess是比较适合的。接下来我先举一个查询连接设备的命令来看看python中怎么样的写法。用到的命令为 adb devices。

import subprocess
order='adb devices' #获取连接设备
pi= subprocess.Popen(order,shell=True,stdout=subprocess.PIPE)
print pi.stdout.read() #打印结果

实际打印结果,可以看到当前电脑连接了三台设备。这里需要再说明一下adb devices 命令的结果返回是一次性的,所以我们用read方法读取数据是没有问题的,然而adb命令里还有一些是实时返回结果的,比如输出手机日志的命令logcat,结果会不断的打印出来当前的设备操作日志信息内容,这种类型的命令我们在python中如果需要获取打印结果,如果还是用read方法的话,等待结果的返回时间会非常长,这里我们就要换一种方法读取结果,写法如下。

import subprocess
order='adb logcat'
pi= subprocess.Popen(order,shell=True,stdout=subprocess.PIPE)
for i in iter(pi.stdout.readline,'b'):
print I

这样的打印效果,如同cmd里操作一致,实时的打印出日志信息。这里我们就用到了readline方法,其实这种写法类似我们读取文件,单行读取和全部内容读取。因为目前pyapp的框架已经基本写完了,所以有了写这篇文章的想法,分享一些python在处理adb命令上的一些心得,就目前来看python在调用adb命令上区别主要就是这两点,最终目的是我们找到需要的功能命令获取结果数据,然后再去通过python处理这些返回数据,实现自动化测试的目的。大家要用好adb命令,还要注意一点的是每条命令的各种参数的搭配使用,比如pyapp的实现是支持多设备连接的,那么我们在针对某个手机进行adb命令操作时,就需要带上-s 加设备号,表示操作的具体设备否则命令会报错。

比如我们针对一个设备去进行点击操作,命令的写法应该是这样:adb -s 49dsd4554wdsa shell input tap 600 900,其中‘49dsd4554wdsa'是设备号,‘600 900'点击屏幕坐标。所以可以看到增加了-s之后就可以很方便的同时操作多台设备。

到此这篇关于python中adb有什么功能的文章就介绍到这了,更多相关python adb功能详解内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python实现的下载8000首儿歌的代码分享
Nov 21 Python
Python实现小数转化为百分数的格式化输出方法示例
Sep 20 Python
Python从ZabbixAPI获取信息及实现Zabbix-API 监控的方法
Sep 17 Python
python实现键盘控制鼠标移动
Nov 27 Python
Django2.1.3 中间件使用详解
Nov 26 Python
初探利用Python进行图文识别(OCR)
Feb 26 Python
python实现比较类的两个instance(对象)是否相等的方法分析
Jun 26 Python
Python完成哈夫曼树编码过程及原理详解
Jul 29 Python
python爬取百度贴吧前1000页内容(requests库面向对象思想实现)
Aug 10 Python
python分布式编程实现过程解析
Nov 08 Python
Ubuntu权限不足无法创建文件夹解决方案
Nov 14 Python
Django filter动态过滤与排序实现过程解析
Nov 26 Python
python如何保存文本文件
Jun 07 #Python
Python如何用wx模块创建文本编辑器
Jun 07 #Python
python如何查看网页代码
Jun 07 #Python
python中对二维列表中一维列表的调用方法
Jun 07 #Python
python学习将数据写入文件并保存方法
Jun 07 #Python
详解python如何引用包package
Jun 07 #Python
Python如何输出整数
Jun 07 #Python
You might like
CakePHP框架Model关联对象用法分析
2017/08/04 PHP
PHP 文件锁与进程锁的使用示例
2017/08/07 PHP
js页面滚动时层智能浮动定位实现(jQuery/MooTools)
2011/08/23 Javascript
基于JavaScript 声明全局变量的三种方式详解
2013/05/07 Javascript
点击进行复制的JS代码实例
2013/08/23 Javascript
利用javascript判断文件是否存在
2013/12/31 Javascript
JS函数定义方式的区别介绍
2016/03/22 Javascript
ionic js 模型 $ionicModal 可以遮住用户主界面的内容框
2016/06/06 Javascript
微信小程序左右滑动切换页面详解及实例代码
2017/02/28 Javascript
详解nodejs微信公众号开发——4.自动回复各种消息
2017/04/11 NodeJs
JS与jQuery实现ListBox上移,下移,左移,右移操作功能示例
2018/05/31 jQuery
详解解决Vue相同路由参数不同不会刷新的问题
2018/10/12 Javascript
JavaScript实现表单注册、表单验证、运算符功能
2018/10/15 Javascript
Vue之beforeEach非登录不能访问的实现(代码亲测)
2019/07/18 Javascript
html+jQuery实现拖动滑块图片拼图验证码插件【移动端适用】
2019/09/10 jQuery
JS操作Fckeditor的一些常用方法(获取、插入等)
2020/02/19 Javascript
Python多维/嵌套字典数据无限遍历的实现
2016/11/04 Python
Python实现获取磁盘剩余空间的2种方法
2017/06/07 Python
一篇文章搞懂Python的类与对象名称空间
2018/12/10 Python
学生信息管理系统Python面向对象版
2019/01/30 Python
python自动化之Ansible的安装教程
2019/06/13 Python
Python虚拟环境的原理及使用详解
2019/07/02 Python
树莓派安装OpenCV3完整过程的实现
2019/10/10 Python
关于numpy中eye和identity的区别详解
2019/11/29 Python
对Python中 \r, \n, \r\n的彻底理解
2020/03/06 Python
python抢购软件/插件/脚本附完整源码
2021/03/04 Python
美国迪克体育用品商店:DICK’S Sporting Goods
2018/07/24 全球购物
澳大利亚墨水站Ink Station:墨水和碳粉打印机墨盒
2019/03/24 全球购物
历史系毕业生自荐信
2013/10/28 职场文书
计算机专业毕业生自荐书
2014/06/02 职场文书
爬山的活动方案
2014/08/16 职场文书
机械工程及自动化专业求职信
2014/09/03 职场文书
学校运动会通讯稿
2015/07/18 职场文书
班主任经验交流心得体会
2015/11/02 职场文书
Python 语言实现六大查找算法
2021/06/30 Python
【D4DJ】美少女DJ企划 动画将于明年冬季开播第2季
2022/04/11 日漫