python中adb有什么功能

作者:yang 时间:2022-06-22 13:25:15 

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之后就可以很方便的同时操作多台设备。

来源:https://www.py.cn/faq/python/18567.html

标签:python,adb功能
0
投稿

猜你喜欢

  • 基于Python实现五子棋游戏

    2023-01-29 21:47:42
  • PyTorch+LSTM实现单变量时间序列预测

    2023-09-23 02:58:05
  • python淘宝抢购脚本程序实现

    2023-08-02 11:29:52
  • ant design中upload组件上传大文件,显示进度条进度的实例

    2024-04-27 16:08:46
  • SQL Server 触发器 表的特定字段更新时,触发Update触发器

    2024-01-25 09:32:20
  • javascript实现简单的二级联动

    2024-04-19 09:49:15
  • 在ASP中用FormatDateTime格式化日期

    2010-08-08 19:16:00
  • JS 中forEach,for in、for of用法实例总结

    2024-04-29 13:19:00
  • 图文详解Mysql使用left join写查询语句执行很慢问题的解决

    2024-01-13 17:14:52
  • PHP多种序列化/反序列化的方法详解

    2024-04-30 08:47:55
  • python读写LMDB文件的方法

    2021-12-17 15:12:37
  • django框架model orM使用字典作为参数,保存数据的方法分析

    2021-03-11 00:18:30
  • 网易首页的新闻代码

    2022-02-24 16:01:15
  • python flask解析json数据不完整的解决方法

    2021-07-12 01:45:00
  • python3 循环读取excel文件并写入json操作

    2022-11-07 15:40:11
  • ajax的responseText乱码的问题的解决方法

    2024-06-05 09:21:28
  • Python3实现的Mysql数据库操作封装类

    2024-01-20 23:57:36
  • 我是如何从玩Photoshop变成老板的

    2008-04-10 11:33:00
  • MySQL使用聚合函数进行单表查询

    2024-01-14 10:41:20
  • 详解Python中键盘鼠标的相关操作

    2021-04-17 23:39:02
  • asp之家 网络编程 m.aspxhome.com