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使用plotly绘制数据图表的方法
Jul 18 Python
Python使用pip安装报错:is not a supported wheel on this platform的解决方法
Jan 23 Python
python如何拆分含有多种分隔符的字符串
Mar 20 Python
Python实现判断一行代码是否为注释的方法
May 23 Python
用Python将结果保存为xlsx的方法
Jan 28 Python
详解Python locals()的陷阱
Mar 26 Python
pip安装python库的方法总结
Aug 02 Python
python中对_init_的理解及实例解析
Oct 11 Python
线程安全及Python中的GIL原理分析
Oct 29 Python
python装饰器使用实例详解
Dec 14 Python
在echarts中图例legend和坐标系grid实现左右布局实例
May 16 Python
python 如何调用远程接口
Sep 11 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
利用discuz自带通行证整合dedecms的方法以及文件下载
2007/03/06 PHP
php中一个有意思的日期逻辑处理
2012/03/25 PHP
php字符串截取的简单方法
2013/07/04 PHP
PHP实现的oracle分页函数实例
2016/01/25 PHP
找到一点可怜的关于dojo资料,谢谢作者!
2006/12/06 Javascript
javascript 数组的方法集合
2008/06/05 Javascript
javascript 跳转代码集合
2009/12/03 Javascript
JS TextArea字符串长度限制代码集合
2012/10/31 Javascript
Js参数值中含有单引号或双引号问题的解决方法
2013/11/06 Javascript
IE6已终止操作问题的2种情况及解决
2014/04/23 Javascript
JavaScript中的Math.sin()方法使用详解
2015/06/15 Javascript
jquery插件ajaxupload实现文件上传操作
2015/12/09 Javascript
JS+CSS实现的漂亮渐变背景特效代码(6个渐变效果)
2016/03/25 Javascript
Node.js操作mysql数据库增删改查
2016/03/30 Javascript
JavaScript设计模式之单体模式全面解析
2016/09/09 Javascript
关于js函数解释(包括内嵌,对象等)
2016/11/20 Javascript
jquery.tableSort.js表格排序插件使用方法详解
2020/08/12 Javascript
Vue自定义指令上报Google Analytics事件统计的方法
2019/02/25 Javascript
vue 动态组件(component :is) 和 dom元素限制(is)用法说明
2020/09/04 Javascript
jQuery实现可以扩展的日历
2020/12/01 jQuery
[01:06]DOTA2亚洲邀请赛专属珍藏-荧煌之礼
2017/03/24 DOTA
Django读取Mysql数据并显示在前端的实例
2018/05/27 Python
Python中关于浮点数的冷知识
2019/09/22 Python
你还在@微信官方?聊聊Python生成你想要的微信头像
2019/09/25 Python
python 使用xlsxwriter循环向excel中插入数据和图片的操作
2021/01/01 Python
python实现马丁策略回测3000只股票的实例代码
2021/01/22 Python
亿企通软件测试面试题
2012/04/10 面试题
给物业的表扬信
2014/01/21 职场文书
幼儿园国庆节活动方案
2014/02/01 职场文书
供货协议书
2014/04/22 职场文书
铣床操作工岗位职责
2014/06/13 职场文书
优秀纪检干部材料
2014/08/27 职场文书
教师求职信怎么写
2015/03/20 职场文书
2016春季运动会开幕词
2016/03/04 职场文书
MySQL七种JOIN类型小结
2021/10/24 MySQL
SQL Server删除表中的重复数据
2022/05/25 SQL Server