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计算回文数的方法
Mar 11 Python
python使用wxpython开发简单记事本的方法
May 20 Python
详解字典树Trie结构及其Python代码实现
Jun 03 Python
python画折线图的程序
Jul 26 Python
python实现自动获取IP并发送到邮箱
Dec 26 Python
python实现加密的方式总结
Jan 19 Python
基于keras 模型、结构、权重保存的实现
Jan 24 Python
检测tensorflow是否使用gpu进行计算的方式
Feb 03 Python
Python 实现使用空值进行赋值 None
Mar 12 Python
Django 设置admin后台表和App(应用)为中文名的操作方法
May 10 Python
Pycharm Plugins加载失败问题解决方案
Nov 28 Python
python实现层次聚类的方法
Nov 01 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
模板引擎正则表达式调试小技巧
2011/07/20 PHP
linux系统上支持php的 iconv()函数的方法
2011/10/01 PHP
php去除数组中重复数据
2014/11/18 PHP
PHP处理CSV表格文件的常用操作方法总结
2016/07/01 PHP
一个网马的tips实现分析
2010/11/28 Javascript
最好用的省市二级联动 原生js实现你值得拥有
2013/09/22 Javascript
jquery 图片缩放拖动的简单实例
2014/01/08 Javascript
jQuery内容过滤选择器用法分析
2015/02/10 Javascript
分享一则JavaScript滚动条插件源码
2015/03/03 Javascript
JS实现简单的键盘打字的效果
2015/04/24 Javascript
JS+CSS实现鼠标滑过时动态翻滚的导航条效果
2015/09/24 Javascript
JS实现浏览器状态栏文字闪烁效果的方法
2015/10/27 Javascript
深入浅析AngularJS和DataModel
2016/02/16 Javascript
浅析JavaScript Array和string的转换(推荐)
2016/05/20 Javascript
JavaScript中的对象继承关系
2016/08/01 Javascript
js简单获取表单中单选按钮值的方法
2016/08/23 Javascript
微信小程序 常见问题总结(4058,40013)及解决办法
2017/01/11 Javascript
mui框架移动开发初体验详解
2017/10/11 Javascript
详解html-webpack-plugin用法全解
2018/01/22 Javascript
webpack手动配置React开发环境的步骤
2018/07/02 Javascript
JQuery Ajax执行跨域请求数据的解决方案
2018/12/10 jQuery
深入浅出 Vue 系列 -- 数据劫持实现原理
2019/04/23 Javascript
使用Vue CLI创建typescript项目的方法
2019/08/09 Javascript
js贪心算法 钱币找零问题代码实例
2019/09/11 Javascript
JavaScript实现捕获鼠标坐标
2020/04/12 Javascript
html中创建并调用vue组件的几种方法汇总
2020/11/17 Javascript
vue-resource 拦截器interceptors使用详解
2021/01/18 Vue.js
JavaScript使用setTimeout实现倒计时效果
2021/02/19 Javascript
[03:40]2014DOTA2国际邀请赛 B神专访:躲箭真的很难
2014/07/13 DOTA
pymssql数据库操作MSSQL2005实例分析
2015/05/25 Python
CentOS下使用yum安装python-pip失败的完美解决方法
2017/08/16 Python
python解析html提取数据,并生成word文档实例解析
2018/01/22 Python
python scp 批量同步文件的实现方法
2019/01/03 Python
python整合ffmpeg实现视频文件的批量转换
2019/05/31 Python
python爬虫请求头设置代码
2020/07/28 Python
个人职业生涯规划书1500字
2013/12/31 职场文书