直接上代码:

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. SQL Server 日志

    http://www.cnblogs.com/CareySon/category/354290.html http://blog.csdn.net/tjvictor/article/details/5 ...

  2. 使用Visual Studio Code调试Electron主进程

    1.打开VS Code,使用文件->打开,打开程序目录 2.切换到调试选项卡 3.打开launch.json配置文件 4.在“附加到进程”节点上增加localhost配置 5.使用命令行启动el ...

  3. HDU 5016 Mart Master II (树上点分治)

    题目地址:pid=5016">HDU 5016 先两遍DFS预处理出每一个点距近期的基站的距离与基站的编号. 然后找重心.求出每一个点距重心的距离.然后依据dis[x]+dis[y] ...

  4. Unity3d-反编译C#和提取资源

    使用MonoDevelop查看代码 1.解压缩一个Ipa文件,找到如下目录 2.拖拽一个Assembly-CSharp.dll文件到MonoDevelop工具栏,即可查看C#代码 其他C#反编译工具: ...

  5. NGINX之——配置HTTPS加密反向代理訪问–自签CA

    转载请注明出处:http://blog.csdn.net/l1028386804/article/details/46695495 出于公司内部訪问考虑,採用的CA是本机Openssl自签名生成的,因 ...

  6. 升级DM5校验

    1,将某个文件生成带DM5的文件,使用srec_cat工具: read A   #原始文件 srec_cat $A -o 要生成的文件名称  -Line_Length 46 -Address_Leng ...

  7. bootstrap简单form表单样式-form-horizontal

    jsp代码: <div id="content" style="background-color: white;"> <form class= ...

  8. mysql中DATETIME类型与TIMESTAMP的区别

    1.DATETIME的日期范围是1001--9999年,TIMESTAMP的时间范围是1970--2038年. 2.DATETIME存储时间与时区无关,TIMESTAMP存储时间与时区有关,显示的值也 ...

  9. A Reusable Aspect for Memory Allocation Checking

    The checking logic would be refactored into an aspect file, as follows: after(void * s) : (call($ ma ...

  10. jFinal基于maven简单的demo

    JFinal 是基于Java 语言的极速 web 开发框架,其核心设计目标是开发迅速.代码量少.学习简单.功能强大.轻量级.易扩展.Restful.在拥有Java语言所有优势的同时再拥有ruby.py ...