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中暂存上传图片的方法
Feb 18 Python
python通过索引遍历列表的方法
May 04 Python
实例Python处理XML文件的方法
Aug 31 Python
Python动态生成多维数组的方法示例
Aug 09 Python
Python实现微信自动好友验证,自动回复,发送群聊链接方法
Feb 21 Python
Python除法之传统除法、Floor除法及真除法实例详解
May 23 Python
Python实现计算文件MD5和SHA1的方法示例
Jun 11 Python
python批量修改图片尺寸,并保存指定路径的实现方法
Jul 04 Python
Python-接口开发入门解析
Aug 01 Python
基于python实现上传文件到OSS代码实例
May 09 Python
Python grequests模块使用场景及代码实例
Aug 10 Python
Python绘制散乱的点构成的图的方法
Apr 21 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
php下正则来匹配dede模板标签的代码
2010/08/21 PHP
详解WordPress开发中wp_title()函数的用法
2016/01/07 PHP
Joomla开启SEF的方法
2016/05/04 PHP
php实现的简单数据库操作Model类
2016/11/16 PHP
详解Yii2 之 生成 URL 的方法
2017/06/16 PHP
js 数据类型转换总结笔记
2011/01/17 Javascript
js获取dom的高度和宽度(可见区域及部分等等)
2013/06/13 Javascript
JS将所有对象s的属性复制给对象r(原生js+jquery)
2014/01/25 Javascript
javascript函数式编程实例分析
2015/04/25 Javascript
jQuery判断一个元素是否可见的方法
2015/06/05 Javascript
Bootstrap网格系统详解
2016/04/26 Javascript
使用ajaxfileupload.js实现上传文件功能
2016/08/13 Javascript
JavaScript实现事件的中断传播和行为阻止方法示例
2017/01/20 Javascript
jQuery选择器之子元素选择器详解
2017/09/18 jQuery
在 Node.js 中使用原生 ES 模块方法解析
2017/09/19 Javascript
浅谈vue的props,data,computed变化对组件更新的影响
2018/01/16 Javascript
微信小程序代码上传、审核发布小程序
2019/05/18 Javascript
微信小程序用户授权弹窗 拒绝时引导用户重新授权实现
2019/07/29 Javascript
vue服务端渲染操作简单入门实例分析
2019/08/28 Javascript
js消除图片小游戏代码
2019/12/11 Javascript
解决Vue router-link绑定事件不生效的问题
2020/07/22 Javascript
javascript实现点击按钮切换轮播图功能
2020/09/23 Javascript
Python封装shell命令实例分析
2015/05/05 Python
python编程线性回归代码示例
2017/12/07 Python
教你使用python画一朵花送女朋友
2018/03/29 Python
python 多线程重启方法
2019/02/18 Python
Python3多线程基础知识点
2019/02/19 Python
django model的update时auto_now不被更新的原因及解决方式
2020/04/01 Python
浅谈python出错时traceback的解读
2020/07/15 Python
CSS3 滤镜 webkit-filter详细介绍及使用方法
2012/12/27 HTML / CSS
十八届三中全会个人学习材料
2014/02/13 职场文书
导航工程专业自荐信
2014/09/02 职场文书
群众路线学习心得体会范文
2014/11/05 职场文书
学校世界艾滋病日宣传活动总结
2015/05/05 职场文书
nginx如何将http访问的网站改成https访问
2021/03/31 Servers
详解Flutter网络请求Dio库的使用及封装
2022/04/14 Java/Android