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 17 Python
python实现的简单猜数字游戏
Apr 04 Python
python3中str(字符串)的使用教程
Mar 23 Python
Python面向对象编程基础解析(二)
Oct 26 Python
PyQt5主窗口动态加载Widget实例代码
Feb 07 Python
python入门前的第一课 python怎样入门
Mar 06 Python
python基础梳理(一)(推荐)
Apr 06 Python
python networkx 包绘制复杂网络关系图的实现
Jul 10 Python
pandas DataFrame创建方法的方式
Aug 02 Python
python3 常见解密加密算法实例分析【base64、MD5等】
Dec 19 Python
python实现扑克牌交互式界面发牌程序
Apr 22 Python
python3爬虫中引用Queue的实例讲解
Nov 24 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
CPU步进是什么意思?i3-9100F B0步进和U0步进区别知识科普
2020/03/17 数码科技
zend framework文件上传功能实例代码
2013/12/25 PHP
php实现aes加密类分享
2014/02/16 PHP
php中实现xml与mysql数据相互转换的方法
2014/12/25 PHP
推荐10个提供免费PHP脚本下载的网站
2014/12/31 PHP
PHP中把数据库查询结果输出为json格式简单实例
2015/04/09 PHP
php基于Fleaphp框架实现cvs数据导入MySQL的方法
2016/02/23 PHP
详解PHP使用Redis存储session时的一个Warning定位
2017/07/05 PHP
javascript:以前写的xmlhttp池,代码
2008/05/18 Javascript
Iframe 自适应高度并实时监控高度变化的js代码
2009/10/30 Javascript
基于jquery的自定义鼠标提示效果 jquery.toolTip
2010/11/14 Javascript
Jquery中getJSON在asp.net中的使用说明
2011/03/10 Javascript
深入理解JavaScript系列(14) 作用域链介绍(Scope Chain)
2012/04/12 Javascript
JavaScript中动态向表格添加数据
2017/01/24 Javascript
详解webpack + vue + node 打造单页面(入门篇)
2017/09/23 Javascript
vue使用ajax获取后台数据进行显示的示例
2018/08/09 Javascript
JavaScript this绑定过程深入详解
2018/12/07 Javascript
环形加载进度条封装(Vue插件版和原生js版)
2019/12/04 Javascript
[15:20]DOTA2亚洲邀请赛总决赛开幕式表演:羽泉献唱
2017/04/05 DOTA
[01:51]历届DOTA2国际邀请赛举办地回顾 TI9落地上海
2018/08/26 DOTA
Python实现远程调用MetaSploit的方法
2014/08/22 Python
Django1.3添加app提示模块不存在的解决方法
2014/08/26 Python
Python通过RabbitMQ服务器实现交换机功能的实例教程
2016/06/29 Python
python 用所有标点符号分隔句子的示例
2019/07/15 Python
深入了解Python enumerate和zip
2020/07/16 Python
python+excel接口自动化获取token并作为请求参数进行传参操作
2020/11/10 Python
linux系统下pip升级报错的解决方法
2021/01/31 Python
一款简洁的纯css3代码实现的动画导航
2014/10/31 HTML / CSS
英国领先的男装设计师服装购物网站:Mainline Menswear
2018/02/04 全球购物
经典优秀个人求职自荐信格式
2013/09/25 职场文书
保护母亲河倡议书
2014/04/14 职场文书
法院干警四风问题自我剖析材料
2014/09/29 职场文书
2015年纪检监察工作总结
2015/04/08 职场文书
学习焦裕禄先进事迹心得体会
2016/01/23 职场文书
pandas DataFrame.shift()函数的具体使用
2021/05/24 Python
Django框架之路由用法
2022/06/10 Python