直接上代码:

import time
import os
import re
import sys #------------------------------------------------------
#下面的代码是获取当前窗口的component参数
def getFocusedPackageAndActivity(): pattern = re.compile(r"[a-zA-Z0-9\.]+/[a-zA-Z0-9\.]+") #这里使用了正则表达式,对输出的内容做了限制,只会显示类似"com.mediatek.factorymode/com.mediatek.factorymode.FactoryMode"的字符串
out = os.popen("adb shell dumpsys window windows | findstr \/ | findstr name=").read() #window下使用findstr
list = pattern.findall(out)
print('list----',list)
component = list[0] #输出列表中的第一条字符串
return component
#print(getFocusedPackageAndActivity())
#------------------------------------------------------
#提取设备号
def get_app_deviceid():
'''实现提取设备号
get_app_deviceid() '''
print('请先检查是否连接了设备,是否启动了开发者选项,是否开启了adb调试....')
#查看连接设备
out=os.popen('adb devices').read()
#
patter= re.compile(r"[a-zA-Z0-9]+")
device_list=patter.findall(out)
#print(device_list)
print('设备连接信息:--------------------------------------\n',out)
#存放设备号
deviceid=[] devices_array=[]
#提取设备号,存放到deviceid中,
if 'device' in device_list:
#print('设备号:',deviceid)
#多个设备,
n=4
while len(device_list)>n:
deviceid.append(device_list[n])
n=n+2
print('设备号:',deviceid) else:
print('无此设备,请检查是否连接设备。')
#------------------------------------------------------
#获取包名和activity
def get_app_activity_and_packagename():
'''实现提取设备号
res=get_app_activity_and_packagename() '''
#正则表达式 输出包名
pattern = re.compile(r"[a-zA-Z0-9\.]+/[a-zA-Z0-9\.]+")
out = os.popen("adb shell dumpsys window windows | findstr \/ | findstr name=").read() #window下使用findstr
out_list = pattern.findall(out)
print('list----',out_list)
component = out_list[0] #输出列表中的第一条字符串
print(component)
'''
#方法1,提取pack,act
pack = str(re.findall('name=(\w+(\.\w+){1,})',out,flags=0))
pack=str(re.findall('\'(.+?)\',',pack,flags=0))
activity = str(re.findall('/(\w+(\.\w+){1,})',out,flags=0))
activity = str(re.findall('\'(.+?)\',',activity,flags=0))
'''
#方法2
res=component.split('/')
pack=res[0]
activity=res[1]
print("package="+pack+'\n'+"activity="+activity) return res
#------------------------------------------------------ if __name__=='__main__': '''
os.system('adb version')
os.system('adb devices') #os.system是不支持读取操作的
out = os.popen('adb shell "dumpsys activity | grep "mFocusedActivity""').read() #os.popen支持读取操作
print(out)
'''
#print(getFocusedPackageAndActivity())
get_app_deviceid()
res=get_app_activity_and_packagename()
print(res)

ptyhon获取app设备号、包名、activity的更多相关文章

  1. appium 获取app的应用包名package和activity

    第一种,使用sdk自带的工具aapt,在sdk\builds-tools\目录下,切换到aapt所在目录 命令:aapt dump badging app的路径,运行后的结果中以下两行分别是应用包名p ...

  2. 获取APP应用的包名信息

    语言: python 3.7 需求:获取APP的包名和程序入口信息,以便在 Appium 脚本中配置 appPackage 和 appActivity 参数. 场景一 资源:已有APP应用的apk安装 ...

  3. 获取app应用的包名

    1.获取哪个app包名,就打开哪个app 2.在dos窗口下输入: adb shell "dumpsys window | grep mCurrentFocus" 获取包名

  4. 获取App的PackageName包名和LauncherActivity启动页

    第一种情况: 查看手机里面已经安装的App: 用数据线连接手机, 打开开发者模式, 并赋予相关权限: 1. 清除日志: adb logcat -c 2. 启动日志: adb logcat Activi ...

  5. 获取软件的apk包名、查看手机设备名称等

    获取软件的apk包名 1.下载aapt,这里使用的是SDK自带的aapt,找到SDK路径下面的aapt.exe,本机路径:E:\downloads\android-sdk_r23.0.2-window ...

  6. 获取APP的元素信息和Activity

    一.获取元素信息 (1)第一种方法是,在windows命令行中输入uiautomatorviewer.bat(前提是已配置好Android SDK环境),按回车键:等待几秒后会打开UI Automat ...

  7. 在Android手机上获取其它应用的包名及版本

    转载请注明出处:http://blog.csdn.net/jason_src/article/details/37757661 获取Android手机上其它应用的包名及版本方法有非常多,能够通过AAP ...

  8. Android 在Android手机上获取其他应用的包名及版本号

    获取Android手机上其他应用的包名及版本号方法有很多,可以通过AAPT从APK包中直接获取,也可以通过代码在手机上获取.显然,对于产品或者用户来说要获取这些信息,在手机上获取更为简便. 下面我们来 ...

  9. MonkeyRunner 之如何获取APP的Package Name和Activity Name

    别人写的就收藏了: MonkeyRunner 之如何获取APP的Package Name和Activity Name http://www.mamicode.com/info-detail-51278 ...

随机推荐

  1. NTP-网络时间协议

    前言 搭建了一个linux虚拟机,发现跑着跑着时间有差异,查资料发现这个是正常的,因为系统时间和硬件时间是本地时间,会因各种原因导致跟标准时间UTC时间有差异,所以计算机界的牛人发明了NTP协议,专门 ...

  2. LA 4850 贪心

    感谢SF巨和WH巨的指导.. 首先,YY得到一个结论,罚值最大的最小值必定是按照截止时间排序得到的.然后,选一个任务插到其他位置,必定产生罚值最大值更大的情况,但有可能产生两个罚值最大情况和更小的情况 ...

  3. Java学习笔记之 IO包 字节流

    IO包最重要的五个类和一个接口 File/OutputStream/InputStream(字节流)/Writer/Reader(字符流) 一个接口:Serializable   File类: 字节流 ...

  4. 使用Fiddler进行抓包

    参考:http://blog.csdn.net/gld824125233/article/details/52588275 1.手机跟电脑需要使用同一个局域网  如果是台式机需要将手机的mac地址让运 ...

  5. mac Homebrew Updating慢,替换及重置Homebrew默认源

    替换成清华的镜像: https://lug.ustc.edu.cn/wiki/mirrors/help/brew.git

  6. HDU 5533/ 2015长春区域 G.Dancing Stars on Me 暴力

    Dancing Stars on Me Problem Description The sky was brushed clean by the wind and the stars were col ...

  7. HDU 3887 Counting Offspring(DFS序+树状数组)

    Counting Offspring Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Othe ...

  8. 杂项-Java:自定义标签

    ylbtech-杂项-Java:自定义标签 1.返回顶部 1. 一般我们说自定义标签是指JSP自定义标签.自定义标签在功能上逻辑上与javaBean 类似,都封装Java 代码.自定义标签是可重用的组 ...

  9. Colored Sticks(trie)

    http://poj.org/problem?id=2513 题意:给一些木棒,木棒两端图上颜色,将端点颜色相同的木棒连在一起,问是否能连成一条直线. 思路:将两端的颜色看成点,将木棒看成边,判断是否 ...

  10. tp的redis驱动

    1.增加分布式支持 使用方法:将文件存放在ThinkPHP框架根目录下的Library\Think\Session\Driver\目录下 config配置参数: //Redis Session配置 ' ...