python中adb有什么功能

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功能详解内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python实现对adb命令封装

    我就废话不多说了,大家还是直接看代码吧! #!/usr/bin/evn python # -*- coding:utf-8 -*- # FileName adbtools.py # Author: HeyNiu # Created Time: 2016/9/19 """ adb 工具类 """ import os import platform import re import time import utils.timetools class

  • 通过python调用adb命令对App进行性能测试方式

    1 监听启动activity 信息命令adb shell logcat | grep START 可以查看apk包名和Activity名字 =========启动时间============ 2 冷启动(第一次启动)热启动(没有退出,第二次打开)命令 adb shell am start -W -n com.qihoo.appstore/.home.MainActivity 3 停止app命令(冷启动) adb shell am force-stop com.qihoo.appstore (热启

  • 使用Python脚本和ADB命令实现卸载App

    前言 本文实现一个 Python 脚本,用来批量卸载模拟器或者实体机上面的 App 以及清除 LogCat 缓存. 开发 Android 的朋友,模拟器或者手机里面常常有大量调试的 Demo,对于手机来说还好,可是对于模拟器,有可能就会造成调试速度以及启动速度的下降.而且模拟器中 App 一个一个删除也是很麻烦.利用 ADB 命令,我们可以做很多事,其中就包括批量操作模拟器或者手机上的 App.当然包括删除操作啦.利用 Python 脚本和 ADB shell 命令以及 AS 自带的 CMD 窗

  • appium+python adb常用命令分享

    前言: 在appium中adb命令的使用必不可少,做android测试嘛,adb命令肯定肯定是每天都要用的啦,所以今天给特地写个博客吧! 这里就不介绍adb是什么以及怎么安装adb了,因为这些东西网上一搜一大把!没必要重写. 对于这些常用的adb命令网上也都有介绍,我这里其实就是简单汇总吧. 一.检查设备 前提:安卓设备开启开发者模式,开启usb调试 1.如何检查手机(或模拟器)是连上电脑的,在cmd输入: 二.安装app 第一步:先下载apk文件包到电脑 第二步:cmd端口输入adb inst

  • python中adb有什么功能

    ADB是Android SDK中的一个工具, 使用ADB可以直接操作管理Android模拟器或者真实的Andriod设备. ADB主要功能有: 1.在Android设备上运行Shell(命令行) 2.管理模拟器或设备的端口映射 3.在计算机和设备之间上传/下载文件 4.将电脑上的本地APK软件安装至Android模拟器或设备上 python有两种方式去调用adb命令,一种是os.system(),一种是os.popen(). 两者的区别就是前者无法获取到返回值,后者可以获取到返回值. os.po

  • Python中的探索性数据分析(功能式)

    这里有一些技巧来处理日志文件提取.假设我们正在查看一些Enterprise Splunk提取.我们可以用Splunk来探索数据.或者我们可以得到一个简单的提取并在Python中摆弄这些数据. 在Python中运行不同的实验似乎比试图在Splunk中进行这种探索性的操作更有效.主要是因为我们可以无所限制地对数据做任何事.我们可以在一个地方创建非常复杂的统计模型. 理论上,我们可以在Splunk中做很多的探索.它有各种报告和分析功能. 但是... 使用Splunk需要假设我们知道我们正在寻找什么.在

  • Python中的groupby分组功能的实例代码

    pandas中的DataFrame中可以根据某个属性的同一值进行聚合分组,可以选单个属性,也可以选多个属性: 代码示例: import pandas as pd A=pd.DataFrame([['Beijing',1.68,2300,'city','Yes'],['Tianjin',1.13,1293,'city','Yes'],['Shaanxi',20.56,3732,'Province','Yes'],['Hebei',18.77,7185,'Province','No'],['Qing

  • python 中使用yagmail 发送邮件功能

    1.使用前先要安装 yagmail pip install yagmail -i https://pypi.douban.com/simple 2.使用QQ邮箱发送邮件,使用的是授权码,需要先到QQ邮箱申请授权码. 邮箱设置-->账户 3.yagmail 模块发送邮件更加简单,四行代码 # -*- encoding: utf-8 -*- import yagmail def E_mali_jj(fr,key,etype,text,to,attachments): ''' :param fr: 发

  • 浅析Python中MySQLdb的事务处理功能

    前言 任何应用都离不开数据,所以在学习python的时候,当然也要学习一个如何用python操作数据库了.MySQLdb就是python对mysql数据库操作的模块.今天写了个工具,目的是把csv中的数据插入到数据库中去.其中有一部分,是需要分别向两张表中插入两条数据,如果第二张表中的数据已经存在,那么第一张表中的数据也不需要插入. 然后通过百度查找发现,其实MySQLdb库,自带了事务处理的功能,pymysql库也是一样. conn = MySQLdb.connect()返回一个连接对象 cu

  • python中随机函数random用法实例

    本文实例讲述了python中随机函数random用法.分享给大家供大家参考.具体如下: python中的random模块功能非常强大,可以生成各种随机值 #! python # random import random print random.choice(['apple', 'pear', 'banana']) #从数组中随机选择一个元素 print random.sample(xrange(100), 10) # sampling without replacement print ran

  • Go 中 slice 的 In 功能实现探索

    之前在知乎看到一个问题:为什么 Golang 没有像 Python 中 in 一样的功能?于是,搜了下这个问题,发现还是有不少人有这样的疑问. 今天来谈谈这个话题. in 是一个很常用的功能,有些语言中可能也称为 contains,虽然不同语言的表示不同,但基本都是有的.不过可惜的是,Go 却没有,它即没有提供类似 Python 操作符 in,也没有像其他语言那样提供这样的标准库函数,如 PHP 中 in_array. Go 的哲学是追求少即是多.我想或许 Go 团队觉得这是一个实现起来不足为道

  • Python中时间datetime的处理与转换用法总结

    python中日期类datetime功能比较强大,使用起来很方便,把常用的两种用法总结如下: from datetime import datetime from datetime import timedelta # 日期格式转换为字符串 NOW = datetime.now() TODAY = NOW.strftime("%Y%m%d") YESTERDAY = (NOW -timedelta(days=1)).strftime("%Y%m%d") # 字符串转

  • 对python中list的五种查找方法说明

    Python中是有查找功能的,五种方式:in.not in.count.index,find 前两种方法是保留字,后两种方式是列表的方法. 下面以a_list = ['a','b','c','hello'],为例作介绍: string类型的话可用find方法去查找字符串位置: a_list.find('a') 如果找到则返回第一个匹配的位置,如果没找到则返回-1,而如果通过index方法去查找的话,没找到的话会报错. 补充知识:Python中查找包含它的列表元素的索引,index报错!!! 对于

  • Python中os模块的实例用法

    1.说明 os.path.exists():用于判断某个路径(文件或文件夹)是否存在,若存在则返回True,若不存在则返回False. os.makedirs():用于创建文件夹.传入所欲创建的文件夹的路径即可,没有返回值.值得一提的是,这个函数可以实现目录的递归创建,也就是说如果所传入的路径中,倒数第二级的目录也不存在,那么就会先创建该级目录,然后在在目录下创建所欲创建的目录,依此类推. os.path.basename():传入一个文件的路径,返回该文件的文件名. os.path.dirna

随机推荐